@dxos/plugin-thread 0.8.4-main.67995b8 → 0.8.4-main.ae835ea

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 (302) hide show
  1. package/dist/lib/browser/ChannelContainer-SVV4ZX5T.mjs +16 -0
  2. package/dist/lib/browser/ChatContainer-ALFWQ65B.mjs +15 -0
  3. package/dist/lib/browser/{app-graph-builder-N7BE5TYW.mjs → app-graph-builder-ACBXRBOS.mjs} +22 -22
  4. package/dist/lib/browser/app-graph-builder-ACBXRBOS.mjs.map +7 -0
  5. package/dist/lib/browser/{call-manager-NIPDYUVD.mjs → call-manager-P3MYR2JS.mjs} +7 -7
  6. package/dist/lib/browser/call-manager-P3MYR2JS.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-6CUDBEYP.mjs +377 -0
  8. package/dist/lib/browser/chunk-6CUDBEYP.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-BBTXGRIR.mjs +18 -0
  10. package/dist/lib/browser/chunk-BBTXGRIR.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-GERVMFQW.mjs → chunk-CP7E2HRE.mjs} +2 -2
  12. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-KWPRNHTK.mjs → chunk-DJOUMWEL.mjs} +242 -238
  14. package/dist/lib/browser/chunk-DJOUMWEL.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-ERWASUQK.mjs → chunk-HDEQRBOC.mjs} +38 -6
  16. package/dist/lib/{node-esm/chunk-25ABSYP2.mjs.map → browser/chunk-HDEQRBOC.mjs.map} +4 -4
  17. package/dist/lib/browser/chunk-IQSXEHOW.mjs +618 -0
  18. package/dist/lib/browser/chunk-IQSXEHOW.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-K2DUJRFJ.mjs +27 -0
  20. package/dist/lib/browser/chunk-K2DUJRFJ.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-L6F2AG6W.mjs +23 -0
  22. package/dist/lib/browser/{chunk-FR7KJPNY.mjs.map → chunk-L6F2AG6W.mjs.map} +3 -3
  23. package/dist/lib/browser/{chunk-ZE7KWN36.mjs → chunk-US5ZQYC3.mjs} +310 -186
  24. package/dist/lib/browser/chunk-US5ZQYC3.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-UTSLSZED.mjs +178 -0
  26. package/dist/lib/browser/chunk-UTSLSZED.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-6NSMBO3B.mjs → chunk-XYUJXHYV.mjs} +55 -5
  28. package/dist/lib/browser/chunk-XYUJXHYV.mjs.map +7 -0
  29. package/dist/lib/browser/index.mjs +35 -24
  30. package/dist/lib/browser/index.mjs.map +3 -3
  31. package/dist/lib/browser/{intent-resolver-JFGLZ6VI.mjs → intent-resolver-5POQTZ24.mjs} +83 -33
  32. package/dist/lib/browser/intent-resolver-5POQTZ24.mjs.map +7 -0
  33. package/dist/lib/browser/{markdown-M3FMR7OD.mjs → markdown-L7LDNF56.mjs} +10 -10
  34. package/dist/lib/browser/markdown-L7LDNF56.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/react-root-RCJLK4EP.mjs +28 -0
  37. package/dist/lib/browser/react-root-RCJLK4EP.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-XWS6GIZY.mjs → react-surface-IC576W2W.mjs} +27 -27
  39. package/dist/lib/browser/react-surface-IC576W2W.mjs.map +7 -0
  40. package/dist/lib/browser/{settings-E32MTL7A.mjs → settings-5FYGBOGI.mjs} +5 -5
  41. package/dist/lib/browser/{settings-E32MTL7A.mjs.map → settings-5FYGBOGI.mjs.map} +1 -1
  42. package/dist/lib/browser/{state-H6CYONWE.mjs → state-36REWXO5.mjs} +5 -5
  43. package/dist/lib/browser/state-36REWXO5.mjs.map +7 -0
  44. package/dist/lib/browser/toolkit-PXASLYEQ.mjs +74 -0
  45. package/dist/lib/browser/toolkit-PXASLYEQ.mjs.map +7 -0
  46. package/dist/lib/browser/types/index.mjs +7 -9
  47. package/dist/lib/node-esm/ChannelContainer-63GMQ753.mjs +17 -0
  48. package/dist/lib/node-esm/{ChatContainer-IQUWU426.mjs → ChatContainer-MFKPXMIK.mjs} +6 -6
  49. package/dist/lib/node-esm/{app-graph-builder-VCW76Z6V.mjs → app-graph-builder-JXD7KY3G.mjs} +22 -22
  50. package/dist/lib/node-esm/app-graph-builder-JXD7KY3G.mjs.map +7 -0
  51. package/dist/lib/node-esm/{call-manager-D6O5ZJJ4.mjs → call-manager-FCEFP7EJ.mjs} +7 -7
  52. package/dist/lib/node-esm/call-manager-FCEFP7EJ.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-25ABSYP2.mjs → chunk-2MMJF7DW.mjs} +38 -6
  54. package/dist/lib/node-esm/chunk-2MMJF7DW.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-OU5BYIDO.mjs → chunk-2V3WSLUZ.mjs} +55 -5
  56. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-57XR3LEF.mjs → chunk-ABUFOZVX.mjs} +2 -2
  58. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-AFDO2SUZ.mjs +25 -0
  60. package/dist/lib/node-esm/{chunk-2CXOK2TD.mjs.map → chunk-AFDO2SUZ.mjs.map} +3 -3
  61. package/dist/lib/node-esm/{chunk-IHDNQLLR.mjs → chunk-KGYDYYKJ.mjs} +310 -186
  62. package/dist/lib/node-esm/chunk-KGYDYYKJ.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-NWUUMKVQ.mjs +378 -0
  64. package/dist/lib/node-esm/chunk-NWUUMKVQ.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-Q7AKKZNY.mjs +619 -0
  66. package/dist/lib/node-esm/chunk-Q7AKKZNY.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-C3XFMUAY.mjs → chunk-QCQAAU6J.mjs} +242 -238
  68. package/dist/lib/node-esm/chunk-QCQAAU6J.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-TYLLHI46.mjs +179 -0
  70. package/dist/lib/node-esm/chunk-TYLLHI46.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-XI45H4IV.mjs +28 -0
  72. package/dist/lib/node-esm/chunk-XI45H4IV.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs +19 -0
  74. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs.map +7 -0
  75. package/dist/lib/node-esm/index.mjs +35 -24
  76. package/dist/lib/node-esm/index.mjs.map +3 -3
  77. package/dist/lib/node-esm/{intent-resolver-OXGNQ44Y.mjs → intent-resolver-63NV3XD2.mjs} +83 -33
  78. package/dist/lib/node-esm/intent-resolver-63NV3XD2.mjs.map +7 -0
  79. package/dist/lib/node-esm/{markdown-INKTE4MH.mjs → markdown-ZQW7MI5U.mjs} +10 -10
  80. package/dist/lib/node-esm/markdown-ZQW7MI5U.mjs.map +7 -0
  81. package/dist/lib/node-esm/meta.json +1 -1
  82. package/dist/lib/node-esm/react-root-4IDB2SN2.mjs +29 -0
  83. package/dist/lib/node-esm/react-root-4IDB2SN2.mjs.map +7 -0
  84. package/dist/lib/node-esm/{react-surface-MJ33KPYE.mjs → react-surface-O4LGTAZ3.mjs} +27 -27
  85. package/dist/lib/node-esm/react-surface-O4LGTAZ3.mjs.map +7 -0
  86. package/dist/lib/node-esm/{settings-SJ24YG7M.mjs → settings-EOBQUZSW.mjs} +5 -5
  87. package/dist/lib/node-esm/{settings-SJ24YG7M.mjs.map → settings-EOBQUZSW.mjs.map} +1 -1
  88. package/dist/lib/node-esm/{state-D7WNDT3N.mjs → state-X3W67GTL.mjs} +5 -5
  89. package/dist/lib/node-esm/state-X3W67GTL.mjs.map +7 -0
  90. package/dist/lib/node-esm/toolkit-X2KA4FNC.mjs +75 -0
  91. package/dist/lib/node-esm/toolkit-X2KA4FNC.mjs.map +7 -0
  92. package/dist/lib/node-esm/types/index.mjs +7 -9
  93. package/dist/types/src/ThreadPlugin.d.ts +1 -1
  94. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  95. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  96. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  97. package/dist/types/src/calls/media-manager.d.ts +1 -1
  98. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  99. package/dist/types/src/calls/types.d.ts +1 -1
  100. package/dist/types/src/calls/types.d.ts.map +1 -1
  101. package/dist/types/src/calls/util/calls-service.d.ts +4 -2
  102. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  103. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  104. package/dist/types/src/calls-service.stories.d.ts +10 -9
  105. package/dist/types/src/calls-service.stories.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  107. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/call-manager.d.ts +1 -1
  109. package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/capabilities.d.ts +3 -3
  111. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/index.d.ts +11 -10
  113. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  115. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/markdown.d.ts +1 -1
  117. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  118. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  119. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  120. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  121. package/dist/types/src/capabilities/settings.d.ts +1 -1
  122. package/dist/types/src/capabilities/state.d.ts +2 -2
  123. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  124. package/dist/types/src/capabilities/toolkit.d.ts +24 -0
  125. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  126. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  127. package/dist/types/src/components/Call/Toolbar.d.ts +2 -2
  128. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  129. package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
  130. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
  131. package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
  132. package/dist/types/src/components/ChannelContainer.d.ts +2 -2
  133. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  134. package/dist/types/src/components/ChannelContainer.stories.d.ts +155 -5
  135. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/Chat.stories.d.ts +158 -5
  137. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/ChatContainer.d.ts +6 -5
  139. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  140. package/dist/types/src/components/Comments.stories.d.ts +156 -4
  141. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  142. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  143. package/dist/types/src/components/CommentsThreadContainer.d.ts +2 -2
  144. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
  145. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  146. package/dist/types/src/components/Media/VideoObject.d.ts +2 -2
  147. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
  148. package/dist/types/src/components/Media/VideoObject.stories.d.ts +18 -4
  149. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  150. package/dist/types/src/components/MessageContainer.d.ts +4 -1
  151. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  152. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  153. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
  154. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +155 -3
  155. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  156. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +157 -4
  157. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  158. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  159. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  160. package/dist/types/src/components/ThreadSettings.d.ts +1 -1
  161. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  162. package/dist/types/src/components/command-extension.d.ts.map +1 -1
  163. package/dist/types/src/components/index.d.ts +1 -1
  164. package/dist/types/src/components/index.d.ts.map +1 -1
  165. package/dist/types/src/components/testing.d.ts +3 -2
  166. package/dist/types/src/components/testing.d.ts.map +1 -1
  167. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  168. package/dist/types/src/hooks/index.d.ts +1 -0
  169. package/dist/types/src/hooks/index.d.ts.map +1 -1
  170. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
  171. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
  172. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +1 -1
  173. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -1
  174. package/dist/types/src/meta.d.ts +1 -2
  175. package/dist/types/src/meta.d.ts.map +1 -1
  176. package/dist/types/src/testing/stories.d.ts.map +1 -1
  177. package/dist/types/src/translations.d.ts +74 -6
  178. package/dist/types/src/translations.d.ts.map +1 -1
  179. package/dist/types/src/types/Channel.d.ts +16 -0
  180. package/dist/types/src/types/Channel.d.ts.map +1 -0
  181. package/dist/types/src/types/Thread.d.ts +167 -0
  182. package/dist/types/src/types/Thread.d.ts.map +1 -0
  183. package/dist/types/src/types/index.d.ts +2 -1
  184. package/dist/types/src/types/index.d.ts.map +1 -1
  185. package/dist/types/src/types/types.d.ts +278 -206
  186. package/dist/types/src/types/types.d.ts.map +1 -1
  187. package/dist/types/tsconfig.tsbuildinfo +1 -1
  188. package/package.json +64 -62
  189. package/src/ThreadPlugin.tsx +136 -126
  190. package/src/calls/call-manager.ts +2 -2
  191. package/src/calls/call-swarm-synchronizer.ts +1 -1
  192. package/src/calls/media-manager.ts +60 -34
  193. package/src/calls/types.ts +8 -4
  194. package/src/calls/util/calls-service.ts +65 -14
  195. package/src/calls/util/stub-media-streams.ts +62 -5
  196. package/src/calls-service.stories.tsx +78 -65
  197. package/src/capabilities/app-graph-builder.ts +24 -18
  198. package/src/capabilities/call-manager.ts +3 -2
  199. package/src/capabilities/capabilities.ts +8 -8
  200. package/src/capabilities/index.ts +1 -0
  201. package/src/capabilities/intent-resolver.ts +50 -20
  202. package/src/capabilities/markdown.ts +4 -3
  203. package/src/capabilities/react-root.tsx +2 -2
  204. package/src/capabilities/react-surface.tsx +19 -18
  205. package/src/capabilities/state.ts +2 -1
  206. package/src/capabilities/toolkit.ts +85 -0
  207. package/src/components/Call/Call.tsx +3 -2
  208. package/src/components/Call/Toolbar.tsx +7 -7
  209. package/src/components/CallDebugPanel.tsx +108 -49
  210. package/src/components/CallSidebar.tsx +2 -1
  211. package/src/components/ChannelContainer.stories.tsx +14 -13
  212. package/src/components/ChannelContainer.tsx +20 -16
  213. package/src/components/Chat.stories.tsx +32 -35
  214. package/src/components/ChatContainer.tsx +33 -20
  215. package/src/components/Comments.stories.tsx +38 -39
  216. package/src/components/CommentsContainer.tsx +4 -3
  217. package/src/components/CommentsThreadContainer.tsx +28 -21
  218. package/src/components/Lobby/Lobby.tsx +1 -1
  219. package/src/components/Media/VideoObject.stories.tsx +36 -28
  220. package/src/components/MessageContainer.tsx +43 -9
  221. package/src/components/Participant/Participant.tsx +13 -7
  222. package/src/components/Participant/ParticipantGrid.tsx +2 -1
  223. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +8 -8
  224. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +44 -42
  225. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +1 -1
  226. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +2 -2
  227. package/src/components/ThreadComplementary.tsx +42 -12
  228. package/src/components/ThreadSettings.tsx +6 -7
  229. package/src/components/command-extension.ts +5 -2
  230. package/src/components/testing.ts +25 -3
  231. package/src/extensions/threads.ts +7 -7
  232. package/src/hooks/index.ts +1 -0
  233. package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
  234. package/src/hooks/useDebugMode.ts +1 -1
  235. package/src/hooks/useVideoStreamTrack.tsx +6 -3
  236. package/src/meta.ts +9 -5
  237. package/src/testing/stories.ts +5 -8
  238. package/src/translations.ts +6 -3
  239. package/src/types/Channel.ts +27 -0
  240. package/src/types/Thread.ts +26 -0
  241. package/src/types/index.ts +2 -1
  242. package/src/types/types.ts +30 -20
  243. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  244. package/src/typings.d.ts +8 -0
  245. package/src/util.ts +1 -1
  246. package/dist/lib/browser/ChannelContainer-3GIE7ASU.mjs +0 -16
  247. package/dist/lib/browser/ChatContainer-AIGIWAUG.mjs +0 -15
  248. package/dist/lib/browser/app-graph-builder-N7BE5TYW.mjs.map +0 -7
  249. package/dist/lib/browser/call-manager-NIPDYUVD.mjs.map +0 -7
  250. package/dist/lib/browser/chunk-3SGRT4NM.mjs +0 -367
  251. package/dist/lib/browser/chunk-3SGRT4NM.mjs.map +0 -7
  252. package/dist/lib/browser/chunk-6NSMBO3B.mjs.map +0 -7
  253. package/dist/lib/browser/chunk-ERWASUQK.mjs.map +0 -7
  254. package/dist/lib/browser/chunk-EV4JWI7L.mjs +0 -17
  255. package/dist/lib/browser/chunk-EV4JWI7L.mjs.map +0 -7
  256. package/dist/lib/browser/chunk-FR7KJPNY.mjs +0 -21
  257. package/dist/lib/browser/chunk-GCLD5ESP.mjs +0 -137
  258. package/dist/lib/browser/chunk-GCLD5ESP.mjs.map +0 -7
  259. package/dist/lib/browser/chunk-GERVMFQW.mjs.map +0 -7
  260. package/dist/lib/browser/chunk-KWPRNHTK.mjs.map +0 -7
  261. package/dist/lib/browser/chunk-LGSDKXPF.mjs +0 -18
  262. package/dist/lib/browser/chunk-LGSDKXPF.mjs.map +0 -7
  263. package/dist/lib/browser/chunk-VUWC4IJM.mjs +0 -479
  264. package/dist/lib/browser/chunk-VUWC4IJM.mjs.map +0 -7
  265. package/dist/lib/browser/chunk-ZE7KWN36.mjs.map +0 -7
  266. package/dist/lib/browser/intent-resolver-JFGLZ6VI.mjs.map +0 -7
  267. package/dist/lib/browser/markdown-M3FMR7OD.mjs.map +0 -7
  268. package/dist/lib/browser/react-root-JEUSQXI6.mjs +0 -28
  269. package/dist/lib/browser/react-root-JEUSQXI6.mjs.map +0 -7
  270. package/dist/lib/browser/react-surface-XWS6GIZY.mjs.map +0 -7
  271. package/dist/lib/browser/state-H6CYONWE.mjs.map +0 -7
  272. package/dist/lib/node-esm/ChannelContainer-7FXCKO7X.mjs +0 -17
  273. package/dist/lib/node-esm/app-graph-builder-VCW76Z6V.mjs.map +0 -7
  274. package/dist/lib/node-esm/call-manager-D6O5ZJJ4.mjs.map +0 -7
  275. package/dist/lib/node-esm/chunk-2CXOK2TD.mjs +0 -23
  276. package/dist/lib/node-esm/chunk-2MFNK53T.mjs +0 -480
  277. package/dist/lib/node-esm/chunk-2MFNK53T.mjs.map +0 -7
  278. package/dist/lib/node-esm/chunk-57XR3LEF.mjs.map +0 -7
  279. package/dist/lib/node-esm/chunk-75RJ5DJI.mjs +0 -19
  280. package/dist/lib/node-esm/chunk-75RJ5DJI.mjs.map +0 -7
  281. package/dist/lib/node-esm/chunk-C3XFMUAY.mjs.map +0 -7
  282. package/dist/lib/node-esm/chunk-FLBFYGBK.mjs +0 -368
  283. package/dist/lib/node-esm/chunk-FLBFYGBK.mjs.map +0 -7
  284. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs +0 -19
  285. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs.map +0 -7
  286. package/dist/lib/node-esm/chunk-IHDNQLLR.mjs.map +0 -7
  287. package/dist/lib/node-esm/chunk-OU5BYIDO.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-TDFHTCZZ.mjs +0 -138
  289. package/dist/lib/node-esm/chunk-TDFHTCZZ.mjs.map +0 -7
  290. package/dist/lib/node-esm/intent-resolver-OXGNQ44Y.mjs.map +0 -7
  291. package/dist/lib/node-esm/markdown-INKTE4MH.mjs.map +0 -7
  292. package/dist/lib/node-esm/react-root-XYYY2JXZ.mjs +0 -29
  293. package/dist/lib/node-esm/react-root-XYYY2JXZ.mjs.map +0 -7
  294. package/dist/lib/node-esm/react-surface-MJ33KPYE.mjs.map +0 -7
  295. package/dist/lib/node-esm/state-D7WNDT3N.mjs.map +0 -7
  296. package/dist/types/src/types/schema.d.ts +0 -162
  297. package/dist/types/src/types/schema.d.ts.map +0 -1
  298. package/src/types/schema.ts +0 -33
  299. /package/dist/lib/browser/{ChannelContainer-3GIE7ASU.mjs.map → ChannelContainer-SVV4ZX5T.mjs.map} +0 -0
  300. /package/dist/lib/browser/{ChatContainer-AIGIWAUG.mjs.map → ChatContainer-ALFWQ65B.mjs.map} +0 -0
  301. /package/dist/lib/node-esm/{ChannelContainer-7FXCKO7X.mjs.map → ChannelContainer-63GMQ753.mjs.map} +0 -0
  302. /package/dist/lib/node-esm/{ChatContainer-IQUWU426.mjs.map → ChatContainer-MFKPXMIK.mjs.map} +0 -0
@@ -2,11 +2,13 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  createBlackCanvasStreamTrack,
4
4
  createInaudibleAudioStreamTrack
5
- } from "./chunk-OU5BYIDO.mjs";
5
+ } from "./chunk-2V3WSLUZ.mjs";
6
6
 
7
7
  // src/calls/types.ts
8
+ import { invariant } from "@dxos/invariant";
8
9
  import { buf } from "@dxos/protocols/buf";
9
10
  import { UserStateSchema } from "@dxos/protocols/buf/dxos/edge/calls_pb";
11
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/types.ts";
10
12
  var CALLS_URL = "https://calls-service.dxos.workers.dev";
11
13
  var codec = {
12
14
  encode: (message) => {
@@ -18,14 +20,42 @@ var codec = {
18
20
  };
19
21
  var TrackNameCodec = {
20
22
  encode: (trackData) => {
21
- return trackData.sessionId + "/" + trackData.trackName;
23
+ invariant(trackData.sessionId, void 0, {
24
+ F: __dxlog_file,
25
+ L: 65,
26
+ S: void 0,
27
+ A: [
28
+ "trackData.sessionId",
29
+ ""
30
+ ]
31
+ });
32
+ invariant(trackData.trackName, void 0, {
33
+ F: __dxlog_file,
34
+ L: 66,
35
+ S: void 0,
36
+ A: [
37
+ "trackData.trackName",
38
+ ""
39
+ ]
40
+ });
41
+ invariant(trackData.mid, void 0, {
42
+ F: __dxlog_file,
43
+ L: 67,
44
+ S: void 0,
45
+ A: [
46
+ "trackData.mid",
47
+ ""
48
+ ]
49
+ });
50
+ return trackData.sessionId + "/" + trackData.trackName + "/" + trackData.mid;
22
51
  },
23
52
  decode: (name) => {
24
- const [sessionId, trackName] = name.split("/");
53
+ const [sessionId, trackName, mid] = name.split("/");
25
54
  return {
26
55
  sessionId,
27
56
  trackName,
28
- location: "remote"
57
+ location: "remote",
58
+ mid
29
59
  };
30
60
  }
31
61
  };
@@ -35,7 +65,7 @@ import md5Hex from "md5-hex";
35
65
  import { DeferredTask, Event, scheduleTaskInterval, synchronized } from "@dxos/async";
36
66
  import { Context, Resource } from "@dxos/context";
37
67
  import { generateName } from "@dxos/display-name";
38
- import { invariant } from "@dxos/invariant";
68
+ import { invariant as invariant2 } from "@dxos/invariant";
39
69
  import { PublicKey } from "@dxos/keys";
40
70
  import { log } from "@dxos/log";
41
71
  import { buf as buf2 } from "@dxos/protocols/buf";
@@ -48,22 +78,23 @@ function _ts_decorate(decorators, target, key, desc) {
48
78
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
49
79
  return c > 3 && r && Object.defineProperty(target, key, r), r;
50
80
  }
51
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-swarm-synchronizer.ts";
81
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-swarm-synchronizer.ts";
52
82
  var DISCONNECTED_ABRUPT_TIMEOUT = 1e4;
53
83
  var CallSwarmSynchronizer = class extends Resource {
84
+ stateUpdated = new Event();
85
+ _state = {
86
+ activities: {}
87
+ };
88
+ _networkService;
89
+ _lastSwarmEvent = void 0;
90
+ _reconcileSwarmStateTask = void 0;
91
+ _identityKey = void 0;
92
+ _deviceKey = void 0;
93
+ _displayName = void 0;
94
+ _swarmCtx = void 0;
95
+ _sendStateTask = void 0;
54
96
  constructor({ networkService }) {
55
97
  super();
56
- this.stateUpdated = new Event();
57
- this._state = {
58
- activities: {}
59
- };
60
- this._lastSwarmEvent = void 0;
61
- this._reconcileSwarmStateTask = void 0;
62
- this._identityKey = void 0;
63
- this._deviceKey = void 0;
64
- this._displayName = void 0;
65
- this._swarmCtx = void 0;
66
- this._sendStateTask = void 0;
67
98
  this._networkService = networkService;
68
99
  }
69
100
  /**
@@ -131,7 +162,7 @@ var CallSwarmSynchronizer = class extends Resource {
131
162
  log.verbose("joined to a different room", {
132
163
  roomId
133
164
  }, {
134
- F: __dxlog_file,
165
+ F: __dxlog_file2,
135
166
  L: 152,
136
167
  S: this,
137
168
  C: (f, a) => f(...a)
@@ -153,8 +184,8 @@ var CallSwarmSynchronizer = class extends Resource {
153
184
  this._reconcileSwarmStateTask = void 0;
154
185
  }
155
186
  async join() {
156
- invariant(this._state.roomId, void 0, {
157
- F: __dxlog_file,
187
+ invariant2(this._state.roomId, void 0, {
188
+ F: __dxlog_file2,
158
189
  L: 176,
159
190
  S: this,
160
191
  A: [
@@ -162,8 +193,8 @@ var CallSwarmSynchronizer = class extends Resource {
162
193
  ""
163
194
  ]
164
195
  });
165
- invariant(!this._swarmCtx, "Already joined", {
166
- F: __dxlog_file,
196
+ invariant2(!this._swarmCtx, "Already joined", {
197
+ F: __dxlog_file2,
167
198
  L: 177,
168
199
  S: this,
169
200
  A: [
@@ -172,7 +203,7 @@ var CallSwarmSynchronizer = class extends Resource {
172
203
  ]
173
204
  });
174
205
  this._swarmCtx = new Context(void 0, {
175
- F: __dxlog_file,
206
+ F: __dxlog_file2,
176
207
  L: 179
177
208
  });
178
209
  const topic = getTopic(this._state.roomId);
@@ -183,7 +214,7 @@ var CallSwarmSynchronizer = class extends Resource {
183
214
  peerKey: this._deviceKey
184
215
  }
185
216
  }, {
186
- F: __dxlog_file,
217
+ F: __dxlog_file2,
187
218
  L: 181,
188
219
  S: this,
189
220
  C: (f, a) => f(...a)
@@ -202,7 +233,7 @@ var CallSwarmSynchronizer = class extends Resource {
202
233
  peerKey: this._deviceKey
203
234
  }
204
235
  }, {
205
- F: __dxlog_file,
236
+ F: __dxlog_file2,
206
237
  L: 188,
207
238
  S: this,
208
239
  C: (f, a) => f(...a)
@@ -214,7 +245,7 @@ var CallSwarmSynchronizer = class extends Resource {
214
245
  peerKey: this._deviceKey
215
246
  }
216
247
  }).catch((err) => log.catch(err, void 0, {
217
- F: __dxlog_file,
248
+ F: __dxlog_file2,
218
249
  L: 194,
219
250
  S: this,
220
251
  C: (f, a) => f(...a)
@@ -282,8 +313,8 @@ var CallSwarmSynchronizer = class extends Resource {
282
313
  }
283
314
  async _reconcileSwarmState() {
284
315
  const swarmEvent = this._lastSwarmEvent;
285
- invariant(swarmEvent, void 0, {
286
- F: __dxlog_file,
316
+ invariant2(swarmEvent, void 0, {
317
+ F: __dxlog_file2,
287
318
  L: 273,
288
319
  S: this,
289
320
  A: [
@@ -303,7 +334,7 @@ var CallSwarmSynchronizer = class extends Resource {
303
334
  error,
304
335
  peer
305
336
  }, {
306
- F: __dxlog_file,
337
+ F: __dxlog_file2,
307
338
  L: 290,
308
339
  S: this,
309
340
  C: (f, a) => f(...a)
@@ -316,7 +347,7 @@ var CallSwarmSynchronizer = class extends Resource {
316
347
  log("reconciling swarm state", {
317
348
  users
318
349
  }, {
319
- F: __dxlog_file,
350
+ F: __dxlog_file2,
320
351
  L: 297,
321
352
  S: this,
322
353
  C: (f, a) => f(...a)
@@ -404,13 +435,15 @@ var monitorAudioLevel = ({ mediaStreamTrack, intervalMs = 1e3 / 10, onMeasure })
404
435
  };
405
436
 
406
437
  // src/calls/util/calls-service.ts
407
- import { PersistentLifecycle } from "@dxos/async";
438
+ import { PersistentLifecycle, Trigger, scheduleTask } from "@dxos/async";
408
439
  import { Resource as Resource2 } from "@dxos/context";
409
- import { invariant as invariant2 } from "@dxos/invariant";
440
+ import { invariant as invariant3 } from "@dxos/invariant";
410
441
  import { log as log2 } from "@dxos/log";
411
442
 
412
443
  // src/calls/util/history-cache.ts
413
444
  var HistoryCache = class {
445
+ _limit;
446
+ _messages;
414
447
  constructor(limit = 100) {
415
448
  this._limit = limit;
416
449
  this._messages = [];
@@ -484,20 +517,21 @@ var BulkRequestDispatcher = class {
484
517
  };
485
518
 
486
519
  // src/calls/util/calls-service.ts
487
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/calls-service.ts";
520
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/calls-service.ts";
488
521
  var NETWORK_TIMEOUT = 5e3;
489
522
  var CallsServicePeer = class extends Resource2 {
523
+ history = new HistoryCache(100);
524
+ _persistentLifecycle = new PersistentLifecycle({
525
+ start: () => this._startSession(),
526
+ stop: (session) => this._stopSession(session)
527
+ });
528
+ _config;
529
+ taskScheduler = new FIFOScheduler();
530
+ pushTrackDispatcher = new BulkRequestDispatcher(32);
531
+ pullTrackDispatcher = new BulkRequestDispatcher(32);
532
+ closeTrackDispatcher = new BulkRequestDispatcher(32);
490
533
  constructor(config) {
491
534
  super();
492
- this.history = new HistoryCache(100);
493
- this._persistentLifecycle = new PersistentLifecycle({
494
- start: () => this._startSession(),
495
- stop: (session) => this._stopSession(session)
496
- });
497
- this.taskScheduler = new FIFOScheduler();
498
- this.pushTrackDispatcher = new BulkRequestDispatcher(32);
499
- this.pullTrackDispatcher = new BulkRequestDispatcher(32);
500
- this.closeTrackDispatcher = new BulkRequestDispatcher(32);
501
535
  this._config = config;
502
536
  }
503
537
  async _open(ctx) {
@@ -527,11 +561,11 @@ var CallsServicePeer = class extends Resource2 {
527
561
  });
528
562
  peerConnection.addEventListener("connectionstatechange", () => {
529
563
  if (peerConnection.connectionState === "failed" || peerConnection.connectionState === "closed") {
530
- log2.warn("calls connection failed", {
564
+ log2.info("calls connection failed", {
531
565
  state: peerConnection.connectionState
532
566
  }, {
533
- F: __dxlog_file2,
534
- L: 118,
567
+ F: __dxlog_file3,
568
+ L: 121,
535
569
  S: this,
536
570
  C: (f, a) => f(...a)
537
571
  });
@@ -542,11 +576,11 @@ var CallsServicePeer = class extends Resource2 {
542
576
  peerConnection.addEventListener("iceconnectionstatechange", () => {
543
577
  clearTimeout(iceTimeout);
544
578
  if (peerConnection.iceConnectionState === "failed" || peerConnection.iceConnectionState === "closed") {
545
- log2.warn("calls connection to ICEs failed", {
579
+ log2.info("calls connection to ICEs failed", {
546
580
  state: peerConnection.iceConnectionState
547
581
  }, {
548
- F: __dxlog_file2,
549
- L: 127,
582
+ F: __dxlog_file3,
583
+ L: 130,
550
584
  S: this,
551
585
  C: (f, a) => f(...a)
552
586
  });
@@ -556,19 +590,19 @@ var CallsServicePeer = class extends Resource2 {
556
590
  iceTimeout = window.setTimeout(() => {
557
591
  if (peerConnection.iceConnectionState === "connected") {
558
592
  log2.info("calls iceConnectionState is connected", void 0, {
559
- F: __dxlog_file2,
560
- L: 136,
593
+ F: __dxlog_file3,
594
+ L: 139,
561
595
  S: this,
562
596
  C: (f, a) => f(...a)
563
597
  });
564
598
  return;
565
599
  }
566
- log2.warn("calls iceConnectionState timed out", {
600
+ log2.info("calls iceConnectionState timed out", {
567
601
  state: peerConnection.iceConnectionState,
568
602
  timeoutSeconds
569
603
  }, {
570
- F: __dxlog_file2,
571
- L: 140,
604
+ F: __dxlog_file3,
605
+ L: 143,
572
606
  S: this,
573
607
  C: (f, a) => f(...a)
574
608
  });
@@ -580,8 +614,8 @@ var CallsServicePeer = class extends Resource2 {
580
614
  }
581
615
  async _initiateCallSession() {
582
616
  log2("creating new session", void 0, {
583
- F: __dxlog_file2,
584
- L: 150,
617
+ F: __dxlog_file3,
618
+ L: 153,
585
619
  S: this,
586
620
  C: (f, a) => f(...a)
587
621
  });
@@ -592,6 +626,7 @@ var CallsServicePeer = class extends Resource2 {
592
626
  }
593
627
  async _fetch(relativePath, requestInit) {
594
628
  this.history.push({
629
+ endpoint: relativePath,
595
630
  type: "request",
596
631
  time: (/* @__PURE__ */ new Date()).toISOString(),
597
632
  method: requestInit?.method ?? "GET",
@@ -606,8 +641,8 @@ var CallsServicePeer = class extends Resource2 {
606
641
  status: response.status,
607
642
  text: await response.text()
608
643
  }, {
609
- F: __dxlog_file2,
610
- L: 165,
644
+ F: __dxlog_file3,
645
+ L: 169,
611
646
  S: this,
612
647
  C: (f, a) => f(...a)
613
648
  });
@@ -616,6 +651,7 @@ var CallsServicePeer = class extends Resource2 {
616
651
  try {
617
652
  const data = await response.clone().json();
618
653
  this.history.push({
654
+ endpoint: relativePath,
619
655
  type: "response",
620
656
  time: (/* @__PURE__ */ new Date()).toISOString(),
621
657
  status: response.status,
@@ -628,6 +664,7 @@ var CallsServicePeer = class extends Resource2 {
628
664
  } catch (error) {
629
665
  const text = await response.text();
630
666
  this.history.push({
667
+ endpoint: relativePath,
631
668
  type: "response",
632
669
  time: (/* @__PURE__ */ new Date()).toISOString(),
633
670
  status: response.status,
@@ -638,8 +675,8 @@ var CallsServicePeer = class extends Resource2 {
638
675
  text,
639
676
  status: response.status
640
677
  }, {
641
- F: __dxlog_file2,
642
- L: 190,
678
+ F: __dxlog_file3,
679
+ L: 196,
643
680
  S: this,
644
681
  C: (f, a) => f(...a)
645
682
  });
@@ -648,8 +685,8 @@ var CallsServicePeer = class extends Resource2 {
648
685
  }
649
686
  async _pushTrackInBulk({ ctx, peerConnection, transceiver, sessionId, trackName }) {
650
687
  log2.verbose("pushing track ", trackName, {
651
- F: __dxlog_file2,
652
- L: 212,
688
+ F: __dxlog_file3,
689
+ L: 218,
653
690
  S: this,
654
691
  C: (f, a) => f(...a)
655
692
  });
@@ -674,9 +711,9 @@ var CallsServicePeer = class extends Resource2 {
674
711
  }))
675
712
  })
676
713
  });
677
- invariant2(response.tracks !== void 0, void 0, {
678
- F: __dxlog_file2,
679
- L: 237,
714
+ invariant3(response.tracks !== void 0, void 0, {
715
+ F: __dxlog_file3,
716
+ L: 243,
680
717
  S: this,
681
718
  A: [
682
719
  "response.tracks !== undefined",
@@ -690,7 +727,7 @@ var CallsServicePeer = class extends Resource2 {
690
727
  return {
691
728
  tracks: response.tracks
692
729
  };
693
- })).then(({ tracks }) => {
730
+ })).then(async ({ tracks }) => {
694
731
  const trackData = tracks.find((t) => t.mid === transceiver.mid);
695
732
  if (trackData) {
696
733
  return {
@@ -700,19 +737,12 @@ var CallsServicePeer = class extends Resource2 {
700
737
  };
701
738
  } else {
702
739
  log2.error("missing track data", void 0, {
703
- F: __dxlog_file2,
704
- L: 257,
740
+ F: __dxlog_file3,
741
+ L: 267,
705
742
  S: this,
706
743
  C: (f, a) => f(...a)
707
744
  });
708
745
  }
709
- }).catch((err) => {
710
- log2.catch(err, void 0, {
711
- F: __dxlog_file2,
712
- L: 261,
713
- S: this,
714
- C: (f, a) => f(...a)
715
- });
716
746
  });
717
747
  const onDispose = async () => {
718
748
  if (transceiver.mid) {
@@ -725,9 +755,9 @@ var CallsServicePeer = class extends Resource2 {
725
755
  }
726
756
  async pushTrack({ track, encodings = [], ctx, previousTrack }) {
727
757
  await this.waitUntilOpen();
728
- invariant2(this.session, void 0, {
729
- F: __dxlog_file2,
730
- L: 288,
758
+ invariant3(this.session, void 0, {
759
+ F: __dxlog_file3,
760
+ L: 295,
731
761
  S: this,
732
762
  A: [
733
763
  "this.session",
@@ -739,8 +769,8 @@ var CallsServicePeer = class extends Resource2 {
739
769
  previousTrack,
740
770
  encodings
741
771
  }, {
742
- F: __dxlog_file2,
743
- L: 289,
772
+ F: __dxlog_file3,
773
+ L: 296,
744
774
  S: this,
745
775
  C: (f, a) => f(...a)
746
776
  });
@@ -752,8 +782,8 @@ var CallsServicePeer = class extends Resource2 {
752
782
  previousTrack,
753
783
  transceiver: transceiver2
754
784
  }, {
755
- F: __dxlog_file2,
756
- L: 293,
785
+ F: __dxlog_file3,
786
+ L: 300,
757
787
  S: this,
758
788
  C: (f, a) => f(...a)
759
789
  });
@@ -764,23 +794,23 @@ var CallsServicePeer = class extends Resource2 {
764
794
  previousTrack,
765
795
  transceiver: transceiver2
766
796
  }, {
767
- F: __dxlog_file2,
768
- L: 296,
797
+ F: __dxlog_file3,
798
+ L: 303,
769
799
  S: this,
770
800
  C: (f, a) => f(...a)
771
801
  });
772
802
  transceiver2.sender.replaceTrack(track).catch((err) => log2.catch(err, void 0, {
773
- F: __dxlog_file2,
774
- L: 297,
803
+ F: __dxlog_file3,
804
+ L: 304,
775
805
  S: this,
776
806
  C: (f, a) => f(...a)
777
807
  }));
778
808
  return previousTrack;
779
809
  }
780
810
  }
781
- invariant2(track, void 0, {
782
- F: __dxlog_file2,
783
- L: 301,
811
+ invariant3(track, void 0, {
812
+ F: __dxlog_file3,
813
+ L: 308,
784
814
  S: this,
785
815
  A: [
786
816
  "track",
@@ -792,8 +822,8 @@ var CallsServicePeer = class extends Resource2 {
792
822
  direction: "sendonly"
793
823
  });
794
824
  log2.verbose("creating transceiver", void 0, {
795
- F: __dxlog_file2,
796
- L: 306,
825
+ F: __dxlog_file3,
826
+ L: 313,
797
827
  S: this,
798
828
  C: (f, a) => f(...a)
799
829
  });
@@ -804,9 +834,9 @@ var CallsServicePeer = class extends Resource2 {
804
834
  sessionId: this.session.sessionId,
805
835
  trackName: stableId
806
836
  });
807
- invariant2(pushedTrackData, void 0, {
808
- F: __dxlog_file2,
809
- L: 315,
837
+ invariant3(pushedTrackData, void 0, {
838
+ F: __dxlog_file3,
839
+ L: 322,
810
840
  S: this,
811
841
  A: [
812
842
  "pushedTrackData",
@@ -822,8 +852,8 @@ var CallsServicePeer = class extends Resource2 {
822
852
  };
823
853
  });
824
854
  transceiver.sender.setParameters(parameters).catch((err) => log2.catch(err, void 0, {
825
- F: __dxlog_file2,
826
- L: 322,
855
+ F: __dxlog_file3,
856
+ L: 329,
827
857
  S: this,
828
858
  C: (f, a) => f(...a)
829
859
  }));
@@ -835,8 +865,8 @@ var CallsServicePeer = class extends Resource2 {
835
865
  log2("pulling track", {
836
866
  trackName: trackData.trackName
837
867
  }, {
838
- F: __dxlog_file2,
839
- L: 340,
868
+ F: __dxlog_file3,
869
+ L: 347,
840
870
  S: this,
841
871
  C: (f, a) => f(...a)
842
872
  });
@@ -850,9 +880,9 @@ var CallsServicePeer = class extends Resource2 {
850
880
  if (newTrackResponse.errorCode) {
851
881
  throw new Error(newTrackResponse.errorDescription);
852
882
  }
853
- invariant2(newTrackResponse.tracks, void 0, {
854
- F: __dxlog_file2,
855
- L: 353,
883
+ invariant3(newTrackResponse.tracks, void 0, {
884
+ F: __dxlog_file3,
885
+ L: 360,
856
886
  S: this,
857
887
  A: [
858
888
  "newTrackResponse.tracks",
@@ -898,18 +928,18 @@ var CallsServicePeer = class extends Resource2 {
898
928
  mid = trackInfo.mid;
899
929
  return track;
900
930
  }).catch((err) => log2.catch(err, void 0, {
901
- F: __dxlog_file2,
902
- L: 405,
931
+ F: __dxlog_file3,
932
+ L: 412,
903
933
  S: this,
904
934
  C: (f, a) => f(...a)
905
935
  }));
906
936
  } else {
907
- log2.warn("missing track info", {
937
+ log2.info("missing track info", {
908
938
  trackData,
909
939
  availableTracks: Array.from(trackMap.keys())
910
940
  }, {
911
- F: __dxlog_file2,
912
- L: 407,
941
+ F: __dxlog_file3,
942
+ L: 414,
913
943
  S: this,
914
944
  C: (f, a) => f(...a)
915
945
  });
@@ -918,8 +948,8 @@ var CallsServicePeer = class extends Resource2 {
918
948
  const onDispose = async () => {
919
949
  if (mid) {
920
950
  log2("closing pulled track ", trackData.trackName, {
921
- F: __dxlog_file2,
922
- L: 413,
951
+ F: __dxlog_file3,
952
+ L: 420,
923
953
  S: this,
924
954
  C: (f, a) => f(...a)
925
955
  });
@@ -933,9 +963,9 @@ var CallsServicePeer = class extends Resource2 {
933
963
  }
934
964
  async pullTrack({ ctx, trackData }) {
935
965
  await this.waitUntilOpen();
936
- invariant2(this.session, void 0, {
937
- F: __dxlog_file2,
938
- L: 434,
966
+ invariant3(this.session, void 0, {
967
+ F: __dxlog_file3,
968
+ L: 441,
939
969
  S: this,
940
970
  A: [
941
971
  "this.session",
@@ -1021,7 +1051,7 @@ var peerConnectionIsConnected = async (peerConnection) => {
1021
1051
 
1022
1052
  // src/calls/util/media.ts
1023
1053
  import { log as log3 } from "@dxos/log";
1024
- var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/media.ts";
1054
+ var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/media.ts";
1025
1055
  var getUserMediaTrack = async (kind, constraints = {}, deviceList) => {
1026
1056
  deviceList ??= (await getDeviceList()).filter((device) => device.kind === kind);
1027
1057
  const firstDevice = deviceList[0];
@@ -1033,7 +1063,7 @@ var getUserMediaTrack = async (kind, constraints = {}, deviceList) => {
1033
1063
  var acquireTrack = async (device, constraints) => {
1034
1064
  const { deviceId, label } = device;
1035
1065
  log3.info(`requesting ${label}`, void 0, {
1036
- F: __dxlog_file3,
1066
+ F: __dxlog_file4,
1037
1067
  L: 23,
1038
1068
  S: void 0,
1039
1069
  C: (f, a) => f(...a)
@@ -1083,8 +1113,20 @@ var START_SPEAKING_THRESHOLD = 0.05;
1083
1113
  var CONTINUE_SPEAKING_THRESHOLD = 0.02;
1084
1114
  var MIN_EVENT_INTERVAL = 100;
1085
1115
  var SpeakingMonitor = class extends Resource3 {
1116
+ _mediaStreamTrack;
1117
+ /**
1118
+ * Event that is emitted when the user starts or stops speaking.
1119
+ * It is debounced to prevent rapid state changes.
1120
+ */
1121
+ speakingChanged = new Event2();
1122
+ /**
1123
+ * Real state of the user speaking.
1124
+ */
1125
+ _isSpeaking = false;
1126
+ _lastEventTime = 0;
1127
+ _deferredUpdate;
1086
1128
  constructor(_mediaStreamTrack) {
1087
- super(), this._mediaStreamTrack = _mediaStreamTrack, this.speakingChanged = new Event2(), this._isSpeaking = false, this._lastEventTime = 0;
1129
+ super(), this._mediaStreamTrack = _mediaStreamTrack;
1088
1130
  }
1089
1131
  get isSpeaking() {
1090
1132
  return this._isSpeaking;
@@ -1133,7 +1175,8 @@ var SpeakingMonitor = class extends Resource3 {
1133
1175
 
1134
1176
  // src/calls/media-manager.ts
1135
1177
  import { DeferredTask as DeferredTask3, Event as Event3, sleep as sleep2, synchronized as synchronized2 } from "@dxos/async";
1136
- import { cancelWithContext, Resource as Resource4 } from "@dxos/context";
1178
+ import { Resource as Resource4, cancelWithContext } from "@dxos/context";
1179
+ import { invariant as invariant4 } from "@dxos/invariant";
1137
1180
  import { log as log4 } from "@dxos/log";
1138
1181
  function _ts_decorate2(decorators, target, key, desc) {
1139
1182
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1141,28 +1184,25 @@ function _ts_decorate2(decorators, target, key, desc) {
1141
1184
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1142
1185
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1143
1186
  }
1144
- var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/media-manager.ts";
1187
+ var __dxlog_file5 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/media-manager.ts";
1145
1188
  var VIDEO_WIDTH = 1280;
1146
1189
  var VIDEO_HEIGHT = 720;
1147
1190
  var MAX_WEB_CAM_FRAMERATE = 24;
1148
1191
  var MAX_WEB_CAM_BITRATE = 12e5;
1149
- var RETRY_INTERVAL = 500;
1150
- var USE_INAUDIBLE_AUDIO = false;
1192
+ var RETRY_INTERVAL = 100;
1193
+ var USE_INAUDIBLE_AUDIO = true;
1151
1194
  var MediaManager = class extends Resource4 {
1152
- constructor() {
1153
- super(...arguments);
1154
- this.stateUpdated = new Event3();
1155
- this._state = {
1156
- pulledVideoStreams: {},
1157
- pulledAudioTracks: {}
1158
- };
1159
- this._speakingMonitor = void 0;
1160
- this._trackToReconcile = [];
1161
- this._blackCanvasStreamTrack = void 0;
1162
- this._inaudibleAudioStreamTrack = void 0;
1163
- this._pushTracksTask = void 0;
1164
- this._pullTracksTask = void 0;
1165
- }
1195
+ stateUpdated = new Event3();
1196
+ _state = {
1197
+ pulledVideoStreams: {},
1198
+ pulledAudioTracks: {}
1199
+ };
1200
+ _speakingMonitor = void 0;
1201
+ _trackToReconcile = [];
1202
+ _blackCanvasStreamTrack = void 0;
1203
+ _inaudibleAudioStreamTrack = void 0;
1204
+ _pushTracksTask = void 0;
1205
+ _pullTracksTask = void 0;
1166
1206
  get isSpeaking() {
1167
1207
  return this._speakingMonitor?.isSpeaking;
1168
1208
  }
@@ -1301,8 +1341,8 @@ var MediaManager = class extends Resource4 {
1301
1341
  }
1302
1342
  async _reconcilePulledMedia() {
1303
1343
  log4("reconciling tracks", void 0, {
1304
- F: __dxlog_file4,
1305
- L: 222,
1344
+ F: __dxlog_file5,
1345
+ L: 223,
1306
1346
  S: this,
1307
1347
  C: (f, a) => f(...a)
1308
1348
  });
@@ -1319,12 +1359,12 @@ var MediaManager = class extends Resource4 {
1319
1359
  currentAudioTracks: Object.keys(this._state.pulledAudioTracks),
1320
1360
  currentVideoStreams: Object.keys(this._state.pulledVideoStreams)
1321
1361
  }, {
1322
- F: __dxlog_file4,
1323
- L: 241,
1362
+ F: __dxlog_file5,
1363
+ L: 242,
1324
1364
  S: this,
1325
1365
  C: (f, a) => f(...a)
1326
1366
  });
1327
- await Promise.all(tracksToPull.map((name) => this._pullTrack(name)));
1367
+ const pullResults = await Promise.all(tracksToPull.map((name) => this._pullTrack(name)));
1328
1368
  await Promise.all([
1329
1369
  ...audioTracksToClose,
1330
1370
  ...videoStreamsToClose
@@ -1333,55 +1373,102 @@ var MediaManager = class extends Resource4 {
1333
1373
  currentAudioTracks: Object.keys(this._state.pulledAudioTracks),
1334
1374
  currentVideoStreams: Object.keys(this._state.pulledVideoStreams)
1335
1375
  }, {
1336
- F: __dxlog_file4,
1337
- L: 256,
1376
+ F: __dxlog_file5,
1377
+ L: 257,
1338
1378
  S: this,
1339
1379
  C: (f, a) => f(...a)
1340
1380
  });
1341
1381
  this.stateUpdated.emit(this._state);
1382
+ if (pullResults.some(({ shouldRetry }) => shouldRetry)) {
1383
+ await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
1384
+ log4.info("retrying pull tracks", {
1385
+ tracksToPull
1386
+ }, {
1387
+ F: __dxlog_file5,
1388
+ L: 265,
1389
+ S: this,
1390
+ C: (f, a) => f(...a)
1391
+ });
1392
+ invariant4(this._pullTracksTask, void 0, {
1393
+ F: __dxlog_file5,
1394
+ L: 266,
1395
+ S: this,
1396
+ A: [
1397
+ "this._pullTracksTask",
1398
+ ""
1399
+ ]
1400
+ });
1401
+ this._pullTracksTask.schedule();
1402
+ }
1342
1403
  }
1343
1404
  async _pushTracks() {
1344
1405
  if (!this._state.peer?.isOpen) {
1345
1406
  return;
1346
1407
  }
1347
1408
  let updated = false;
1348
- const [pushedVideoTrack, pushedAudioTrack, pushedScreenshareTrack] = await Promise.all([
1349
- this._pushTrack(this._state.videoTrack, this._state.pushedVideoTrack, [
1409
+ const [pushVideoResult, pushAudioResult, pushScreenshareResult] = await Promise.all([
1410
+ this._maybePushTrack(this._state.videoTrack, this._state.pushedVideoTrack, [
1350
1411
  {
1351
1412
  maxFramerate: MAX_WEB_CAM_FRAMERATE,
1352
1413
  maxBitrate: MAX_WEB_CAM_BITRATE
1353
1414
  }
1354
1415
  ]),
1355
- this._pushTrack(this._state.audioTrack, this._state.pushedAudioTrack, [
1416
+ this._maybePushTrack(this._state.audioTrack, this._state.pushedAudioTrack, [
1356
1417
  {
1357
1418
  networkPriority: "high"
1358
1419
  }
1359
1420
  ]),
1360
- this._pushTrack(this._state.screenshareTrack, this._state.pushedScreenshareTrack)
1421
+ this._maybePushTrack(this._state.screenshareTrack, this._state.pushedScreenshareTrack)
1361
1422
  ]);
1362
- if (pushedVideoTrack !== this._state.pushedVideoTrack) {
1363
- this._state.pushedVideoTrack = pushedVideoTrack;
1423
+ if (pushVideoResult.track !== this._state.pushedVideoTrack) {
1424
+ this._state.pushedVideoTrack = pushVideoResult.track;
1364
1425
  updated = true;
1365
1426
  }
1366
- if (pushedAudioTrack !== this._state.pushedAudioTrack) {
1367
- this._state.pushedAudioTrack = pushedAudioTrack;
1427
+ if (pushAudioResult.track !== this._state.pushedAudioTrack) {
1428
+ this._state.pushedAudioTrack = pushAudioResult.track;
1368
1429
  updated = true;
1369
1430
  }
1370
- if (pushedScreenshareTrack !== this._state.pushedScreenshareTrack) {
1371
- this._state.pushedScreenshareTrack = pushedScreenshareTrack;
1431
+ if (pushScreenshareResult.track !== this._state.pushedScreenshareTrack) {
1432
+ this._state.pushedScreenshareTrack = pushScreenshareResult.track;
1372
1433
  updated = true;
1373
1434
  }
1374
- if (!updated) {
1375
- return;
1435
+ const shouldRetry = pushVideoResult.shouldRetry || pushAudioResult.shouldRetry || pushScreenshareResult.shouldRetry;
1436
+ if (updated) {
1437
+ this.stateUpdated.emit(this._state);
1438
+ }
1439
+ if (shouldRetry) {
1440
+ await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
1441
+ log4.info("retrying push tracks", {
1442
+ pushVideoResult,
1443
+ pushAudioResult,
1444
+ pushScreenshareResult
1445
+ }, {
1446
+ F: __dxlog_file5,
1447
+ L: 306,
1448
+ S: this,
1449
+ C: (f, a) => f(...a)
1450
+ });
1451
+ invariant4(this._pushTracksTask, void 0, {
1452
+ F: __dxlog_file5,
1453
+ L: 307,
1454
+ S: this,
1455
+ A: [
1456
+ "this._pushTracksTask",
1457
+ ""
1458
+ ]
1459
+ });
1460
+ this._pushTracksTask.schedule();
1376
1461
  }
1377
- this.stateUpdated.emit(this._state);
1378
1462
  }
1379
1463
  async _pullTrack(name) {
1380
1464
  const ctx = this._ctx.derive();
1381
1465
  try {
1382
1466
  const trackData = TrackNameCodec.decode(name);
1383
1467
  const track = await this._state.peer.pullTrack({
1384
- trackData,
1468
+ trackData: {
1469
+ ...trackData,
1470
+ mid: void 0
1471
+ },
1385
1472
  ctx
1386
1473
  });
1387
1474
  if (track?.readyState === "ended") {
@@ -1394,7 +1481,9 @@ var MediaManager = class extends Resource4 {
1394
1481
  ctx
1395
1482
  };
1396
1483
  ctx.onDispose(() => delete this._state.pulledAudioTracks[name]);
1397
- break;
1484
+ return {
1485
+ shouldRetry: false
1486
+ };
1398
1487
  }
1399
1488
  case "video": {
1400
1489
  const mediaStream = new MediaStream();
@@ -1408,44 +1497,63 @@ var MediaManager = class extends Resource4 {
1408
1497
  track.stop();
1409
1498
  delete this._state.pulledVideoStreams[name];
1410
1499
  });
1411
- break;
1500
+ return {
1501
+ shouldRetry: false
1502
+ };
1412
1503
  }
1413
1504
  default:
1414
1505
  throw new Error(`Invalid track kind: ${track?.kind}`);
1415
1506
  }
1416
1507
  } catch (err) {
1417
- log4.verbose("failed to pull track", {
1508
+ log4.info("failed to pull track", {
1418
1509
  err,
1419
1510
  name
1420
1511
  }, {
1421
- F: __dxlog_file4,
1422
- L: 326,
1512
+ F: __dxlog_file5,
1513
+ L: 343,
1423
1514
  S: this,
1424
1515
  C: (f, a) => f(...a)
1425
1516
  });
1426
1517
  void ctx.dispose();
1427
- await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
1428
- log4.verbose("retrying pull track", {
1429
- name
1518
+ return {
1519
+ shouldRetry: true
1520
+ };
1521
+ }
1522
+ }
1523
+ async _maybePushTrack(track, previousTrack, encodings) {
1524
+ if (!track && !previousTrack) {
1525
+ return {
1526
+ track: void 0
1527
+ };
1528
+ }
1529
+ const ctx = this._ctx.derive();
1530
+ try {
1531
+ return {
1532
+ track: await this._state.peer.pushTrack({
1533
+ ctx,
1534
+ track: track ?? null,
1535
+ previousTrack,
1536
+ encodings
1537
+ })
1538
+ };
1539
+ } catch (err) {
1540
+ log4.info("failed to push track", {
1541
+ err,
1542
+ track,
1543
+ previousTrack,
1544
+ encodings
1430
1545
  }, {
1431
- F: __dxlog_file4,
1432
- L: 329,
1546
+ F: __dxlog_file5,
1547
+ L: 370,
1433
1548
  S: this,
1434
1549
  C: (f, a) => f(...a)
1435
1550
  });
1436
- this._pullTracksTask.schedule();
1551
+ void ctx.dispose();
1552
+ return {
1553
+ shouldRetry: true
1554
+ };
1437
1555
  }
1438
1556
  }
1439
- async _pushTrack(track, previousTrack, encodings) {
1440
- if (!track && !previousTrack) {
1441
- return;
1442
- }
1443
- return this._state.peer.pushTrack({
1444
- track: track ?? null,
1445
- previousTrack,
1446
- encodings
1447
- });
1448
- }
1449
1557
  };
1450
1558
  _ts_decorate2([
1451
1559
  synchronized2
@@ -1458,7 +1566,7 @@ _ts_decorate2([
1458
1566
  import { computed } from "@preact/signals-core";
1459
1567
  import { Event as Event4, synchronized as synchronized3 } from "@dxos/async";
1460
1568
  import { Resource as Resource5 } from "@dxos/context";
1461
- import { invariant as invariant3 } from "@dxos/invariant";
1569
+ import { invariant as invariant5 } from "@dxos/invariant";
1462
1570
  import { live } from "@dxos/live-object";
1463
1571
  import { isNonNullable as isNonNullable2 } from "@dxos/util";
1464
1572
  function _ts_decorate3(decorators, target, key, desc) {
@@ -1467,8 +1575,30 @@ function _ts_decorate3(decorators, target, key, desc) {
1467
1575
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1468
1576
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1469
1577
  }
1470
- var __dxlog_file5 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-manager.ts";
1578
+ var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-manager.ts";
1471
1579
  var CallManager = class extends Resource5 {
1580
+ _client;
1581
+ callStateUpdated = new Event4();
1582
+ // TODO(wittjosiah): Consolidate isSpeaking into the MediaState type.
1583
+ mediaStateUpdated = new Event4();
1584
+ left = new Event4();
1585
+ /**
1586
+ * Live object state. Is changed on internal events.
1587
+ * CAUTION: Do not change directly.
1588
+ */
1589
+ _state = live({
1590
+ call: {},
1591
+ media: {
1592
+ pulledAudioTracks: {},
1593
+ pulledVideoStreams: {}
1594
+ }
1595
+ });
1596
+ // TODO(wittjosiah): This shouldn't be necessary, live-object's signals should be granular.
1597
+ _raisedHandSignal = computed(() => this._state.call.raisedHand ?? false);
1598
+ _speakingSignal = computed(() => this._state.call.speaking ?? false);
1599
+ _joinedSignal = computed(() => this._state.call.joined ?? false);
1600
+ _swarmSynchronizer;
1601
+ _mediaManager;
1472
1602
  /** @reactive */
1473
1603
  get roomId() {
1474
1604
  return this._state.call.roomId;
@@ -1549,17 +1679,11 @@ var CallManager = class extends Resource5 {
1549
1679
  }
1550
1680
  // TODO(burdon): Can this be mocked?
1551
1681
  constructor(_client) {
1552
- super(), this._client = _client, this.callStateUpdated = new Event4(), this.mediaStateUpdated = new Event4(), this.left = new Event4(), this._state = live({
1553
- call: {},
1554
- media: {
1555
- pulledAudioTracks: {},
1556
- pulledVideoStreams: {}
1557
- }
1558
- }), this._raisedHandSignal = computed(() => this._state.call.raisedHand ?? false), this._speakingSignal = computed(() => this._state.call.speaking ?? false), this._joinedSignal = computed(() => this._state.call.joined ?? false);
1682
+ super(), this._client = _client;
1559
1683
  this._client.config.getOrThrow("runtime.services.edge.url");
1560
1684
  const networkService = this._client.services.services.NetworkService;
1561
- invariant3(networkService, "network service not found", {
1562
- F: __dxlog_file5,
1685
+ invariant5(networkService, "network service not found", {
1686
+ F: __dxlog_file6,
1563
1687
  L: 159,
1564
1688
  S: this,
1565
1689
  A: [
@@ -1612,7 +1736,7 @@ var CallManager = class extends Resource5 {
1612
1736
  this.roomId && this.left.emit(this.roomId);
1613
1737
  }
1614
1738
  _onCallStateUpdated(state) {
1615
- const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self?.id)?.flatMap((user) => [
1739
+ const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self.id)?.flatMap((user) => [
1616
1740
  user.tracks?.video,
1617
1741
  user.tracks?.audio,
1618
1742
  user.tracks?.screenshare
@@ -1667,4 +1791,4 @@ export {
1667
1791
  MediaManager,
1668
1792
  CallManager
1669
1793
  };
1670
- //# sourceMappingURL=chunk-IHDNQLLR.mjs.map
1794
+ //# sourceMappingURL=chunk-KGYDYYKJ.mjs.map