@dxos/plugin-thread 0.8.4-main.c1de068 → 0.8.4-main.c351d160a8

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 (513) hide show
  1. package/dist/lib/browser/CallDebugPanel-BO3SLD4E.mjs +182 -0
  2. package/dist/lib/browser/CallDebugPanel-BO3SLD4E.mjs.map +7 -0
  3. package/dist/lib/browser/CallSidebar-KSOBZJGD.mjs +36 -0
  4. package/dist/lib/browser/CallSidebar-KSOBZJGD.mjs.map +7 -0
  5. package/dist/lib/browser/ChannelContainer-EQZXMQMV.mjs +17 -0
  6. package/dist/lib/browser/ChatContainer-VPCJ2AMF.mjs +18 -0
  7. package/dist/lib/browser/ThreadCompanion-7GTSEJQT.mjs +209 -0
  8. package/dist/lib/browser/ThreadCompanion-7GTSEJQT.mjs.map +7 -0
  9. package/dist/lib/browser/ThreadSettings-VL3HBE62.mjs +20 -0
  10. package/dist/lib/browser/ThreadSettings-VL3HBE62.mjs.map +7 -0
  11. package/dist/lib/browser/app-graph-builder-ECTCB36F.mjs +189 -0
  12. package/dist/lib/browser/app-graph-builder-ECTCB36F.mjs.map +7 -0
  13. package/dist/lib/browser/blueprint-definition-UJ4QH3LV.mjs +17 -0
  14. package/dist/lib/browser/blueprint-definition-UJ4QH3LV.mjs.map +7 -0
  15. package/dist/lib/browser/blueprints/index.mjs +8 -0
  16. package/dist/lib/browser/call-manager-3P6D7IH7.mjs +27 -0
  17. package/dist/lib/browser/call-manager-3P6D7IH7.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-2M2HV5K4.mjs +35 -0
  19. package/dist/lib/browser/chunk-2M2HV5K4.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-7GONB2BI.mjs +219 -0
  21. package/dist/lib/browser/chunk-7GONB2BI.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-GERVMFQW.mjs → chunk-CP7E2HRE.mjs} +2 -2
  23. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-D7PVIURR.mjs +1094 -0
  25. package/dist/lib/browser/chunk-D7PVIURR.mjs.map +7 -0
  26. package/dist/lib/browser/{chunk-ZE7KWN36.mjs → chunk-ERK254BS.mjs} +381 -240
  27. package/dist/lib/browser/chunk-ERK254BS.mjs.map +7 -0
  28. package/dist/lib/browser/chunk-FGEVENLN.mjs +280 -0
  29. package/dist/lib/browser/chunk-FGEVENLN.mjs.map +7 -0
  30. package/dist/lib/browser/{chunk-ERWASUQK.mjs → chunk-HDLDMR54.mjs} +85 -50
  31. package/dist/lib/browser/chunk-HDLDMR54.mjs.map +7 -0
  32. package/dist/lib/browser/{chunk-6NSMBO3B.mjs → chunk-ISCHODBV.mjs} +55 -5
  33. package/dist/lib/browser/chunk-ISCHODBV.mjs.map +7 -0
  34. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  35. package/dist/lib/browser/chunk-J75MXJZN.mjs +105 -0
  36. package/dist/lib/browser/chunk-J75MXJZN.mjs.map +7 -0
  37. package/dist/lib/browser/chunk-JMH6UT5J.mjs +127 -0
  38. package/dist/lib/browser/chunk-JMH6UT5J.mjs.map +7 -0
  39. package/dist/lib/browser/chunk-PV5GYINX.mjs +135 -0
  40. package/dist/lib/browser/chunk-PV5GYINX.mjs.map +7 -0
  41. package/dist/lib/browser/chunk-QVJO3VJ4.mjs +20 -0
  42. package/dist/lib/browser/chunk-QVJO3VJ4.mjs.map +7 -0
  43. package/dist/lib/browser/index.mjs +136 -137
  44. package/dist/lib/browser/index.mjs.map +4 -4
  45. package/dist/lib/browser/markdown-J6H6EIZE.mjs +83 -0
  46. package/dist/lib/browser/markdown-J6H6EIZE.mjs.map +7 -0
  47. package/dist/lib/browser/meta.json +1 -1
  48. package/dist/lib/browser/operation-resolver-3JHO5DFX.mjs +434 -0
  49. package/dist/lib/browser/operation-resolver-3JHO5DFX.mjs.map +7 -0
  50. package/dist/lib/browser/react-root-AM3J34AK.mjs +27 -0
  51. package/dist/lib/browser/react-root-AM3J34AK.mjs.map +7 -0
  52. package/dist/lib/browser/react-surface-VNGEEVYP.mjs +115 -0
  53. package/dist/lib/browser/react-surface-VNGEEVYP.mjs.map +7 -0
  54. package/dist/lib/browser/settings-HYNYTOSX.mjs +35 -0
  55. package/dist/lib/browser/settings-HYNYTOSX.mjs.map +7 -0
  56. package/dist/lib/browser/state-NQZQCDFD.mjs +25 -0
  57. package/dist/lib/browser/state-NQZQCDFD.mjs.map +7 -0
  58. package/dist/lib/browser/types/index.mjs +11 -12
  59. package/dist/lib/node-esm/CallDebugPanel-7OIL5FVT.mjs +183 -0
  60. package/dist/lib/node-esm/CallDebugPanel-7OIL5FVT.mjs.map +7 -0
  61. package/dist/lib/node-esm/CallSidebar-Y2I3UBBA.mjs +37 -0
  62. package/dist/lib/node-esm/CallSidebar-Y2I3UBBA.mjs.map +7 -0
  63. package/dist/lib/node-esm/ChannelContainer-WB5YYZKU.mjs +18 -0
  64. package/dist/lib/node-esm/ChannelContainer-WB5YYZKU.mjs.map +7 -0
  65. package/dist/lib/node-esm/ChatContainer-CP6PNF53.mjs +19 -0
  66. package/dist/lib/node-esm/ChatContainer-CP6PNF53.mjs.map +7 -0
  67. package/dist/lib/node-esm/ThreadCompanion-5MM3XACT.mjs +210 -0
  68. package/dist/lib/node-esm/ThreadCompanion-5MM3XACT.mjs.map +7 -0
  69. package/dist/lib/node-esm/ThreadSettings-TCZMYH3J.mjs +21 -0
  70. package/dist/lib/node-esm/ThreadSettings-TCZMYH3J.mjs.map +7 -0
  71. package/dist/lib/node-esm/app-graph-builder-HSX4GHGQ.mjs +190 -0
  72. package/dist/lib/node-esm/app-graph-builder-HSX4GHGQ.mjs.map +7 -0
  73. package/dist/lib/node-esm/blueprint-definition-SABUBK23.mjs +18 -0
  74. package/dist/lib/node-esm/blueprint-definition-SABUBK23.mjs.map +7 -0
  75. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  76. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  77. package/dist/lib/node-esm/call-manager-ENAYC5L3.mjs +28 -0
  78. package/dist/lib/node-esm/call-manager-ENAYC5L3.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-35G7Q243.mjs +1095 -0
  80. package/dist/lib/node-esm/chunk-35G7Q243.mjs.map +7 -0
  81. package/dist/lib/node-esm/chunk-4BOUHFEC.mjs +128 -0
  82. package/dist/lib/node-esm/chunk-4BOUHFEC.mjs.map +7 -0
  83. package/dist/lib/node-esm/chunk-A3SWGVF3.mjs +37 -0
  84. package/dist/lib/node-esm/chunk-A3SWGVF3.mjs.map +7 -0
  85. package/dist/lib/node-esm/{chunk-57XR3LEF.mjs → chunk-ABUFOZVX.mjs} +2 -2
  86. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +7 -0
  87. package/dist/lib/node-esm/chunk-B7POKKGL.mjs +136 -0
  88. package/dist/lib/node-esm/chunk-B7POKKGL.mjs.map +7 -0
  89. package/dist/lib/node-esm/chunk-CSIDVJEC.mjs +220 -0
  90. package/dist/lib/node-esm/chunk-CSIDVJEC.mjs.map +7 -0
  91. package/dist/lib/node-esm/chunk-HGIUKAXD.mjs +281 -0
  92. package/dist/lib/node-esm/chunk-HGIUKAXD.mjs.map +7 -0
  93. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  94. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  95. package/dist/lib/node-esm/chunk-N2T5KLKB.mjs +22 -0
  96. package/dist/lib/node-esm/chunk-N2T5KLKB.mjs.map +7 -0
  97. package/dist/lib/node-esm/chunk-NDSI2G7B.mjs +107 -0
  98. package/dist/lib/node-esm/chunk-NDSI2G7B.mjs.map +7 -0
  99. package/dist/lib/node-esm/{chunk-IHDNQLLR.mjs → chunk-QP3KQOPQ.mjs} +381 -240
  100. package/dist/lib/node-esm/chunk-QP3KQOPQ.mjs.map +7 -0
  101. package/dist/lib/node-esm/{chunk-OU5BYIDO.mjs → chunk-VBI32FGI.mjs} +55 -5
  102. package/dist/lib/node-esm/chunk-VBI32FGI.mjs.map +7 -0
  103. package/dist/lib/node-esm/{chunk-25ABSYP2.mjs → chunk-YN2Y7GPW.mjs} +85 -50
  104. package/dist/lib/node-esm/chunk-YN2Y7GPW.mjs.map +7 -0
  105. package/dist/lib/node-esm/index.mjs +136 -137
  106. package/dist/lib/node-esm/index.mjs.map +4 -4
  107. package/dist/lib/node-esm/markdown-P2WSGZJB.mjs +84 -0
  108. package/dist/lib/node-esm/markdown-P2WSGZJB.mjs.map +7 -0
  109. package/dist/lib/node-esm/meta.json +1 -1
  110. package/dist/lib/node-esm/operation-resolver-I3RCYCC4.mjs +435 -0
  111. package/dist/lib/node-esm/operation-resolver-I3RCYCC4.mjs.map +7 -0
  112. package/dist/lib/node-esm/react-root-TFDOAH6Z.mjs +28 -0
  113. package/dist/lib/node-esm/react-root-TFDOAH6Z.mjs.map +7 -0
  114. package/dist/lib/node-esm/react-surface-3C7PBXXD.mjs +116 -0
  115. package/dist/lib/node-esm/react-surface-3C7PBXXD.mjs.map +7 -0
  116. package/dist/lib/node-esm/settings-FV2O6HDY.mjs +36 -0
  117. package/dist/lib/node-esm/settings-FV2O6HDY.mjs.map +7 -0
  118. package/dist/lib/node-esm/state-IODNXJEB.mjs +26 -0
  119. package/dist/lib/node-esm/state-IODNXJEB.mjs.map +7 -0
  120. package/dist/lib/node-esm/types/index.mjs +11 -12
  121. package/dist/types/src/ThreadPlugin.d.ts +2 -1
  122. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  123. package/dist/types/src/blueprints/index.d.ts +2 -0
  124. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  125. package/dist/types/src/blueprints/thread-blueprint.d.ts +4 -0
  126. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
  127. package/dist/types/src/calls/call-manager.d.ts +40 -30
  128. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  129. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +2 -2
  130. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  131. package/dist/types/src/calls/media-manager.d.ts +2 -2
  132. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  133. package/dist/types/src/calls/types.d.ts +1 -1
  134. package/dist/types/src/calls/types.d.ts.map +1 -1
  135. package/dist/types/src/calls/util/calls-service.d.ts +5 -3
  136. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  137. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  138. package/dist/types/src/calls/util/task-scheduling.d.ts +2 -2
  139. package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -1
  140. package/dist/types/src/calls-service.stories.d.ts +10 -9
  141. package/dist/types/src/calls-service.stories.d.ts.map +1 -1
  142. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  143. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  144. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  145. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  146. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +6 -0
  147. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  148. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  149. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  150. package/dist/types/src/capabilities/call-manager/call-manager.d.ts +6 -0
  151. package/dist/types/src/capabilities/call-manager/call-manager.d.ts.map +1 -0
  152. package/dist/types/src/capabilities/call-manager/index.d.ts +3 -0
  153. package/dist/types/src/capabilities/call-manager/index.d.ts.map +1 -0
  154. package/dist/types/src/capabilities/index.d.ts +9 -15
  155. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  156. package/dist/types/src/capabilities/markdown/index.d.ts +3 -0
  157. package/dist/types/src/capabilities/markdown/index.d.ts.map +1 -0
  158. package/dist/types/src/capabilities/markdown/markdown.d.ts +5 -0
  159. package/dist/types/src/capabilities/markdown/markdown.d.ts.map +1 -0
  160. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  161. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  162. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  163. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  164. package/dist/types/src/capabilities/react-root/index.d.ts +6 -0
  165. package/dist/types/src/capabilities/react-root/index.d.ts.map +1 -0
  166. package/dist/types/src/capabilities/react-root/react-root.d.ts +9 -0
  167. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -0
  168. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  169. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  170. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  171. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  172. package/dist/types/src/capabilities/settings/index.d.ts +3 -0
  173. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  174. package/dist/types/src/capabilities/settings/settings.d.ts +6 -0
  175. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  176. package/dist/types/src/capabilities/state/index.d.ts +3 -0
  177. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  178. package/dist/types/src/capabilities/state/state.d.ts +7 -0
  179. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  180. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  181. package/dist/types/src/components/Call/Toolbar.d.ts +2 -2
  182. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  183. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts +13 -0
  184. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts.map +1 -0
  185. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts +164 -0
  186. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts.map +1 -0
  187. package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts +14 -0
  188. package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts.map +1 -0
  189. package/dist/types/src/components/CommentsPanel/index.d.ts +3 -0
  190. package/dist/types/src/components/CommentsPanel/index.d.ts.map +1 -0
  191. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  192. package/dist/types/src/components/Media/VideoObject.d.ts +3 -3
  193. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
  194. package/dist/types/src/components/Media/VideoObject.stories.d.ts +18 -4
  195. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  196. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts +15 -0
  197. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts.map +1 -0
  198. package/dist/types/src/components/MessagePanel/index.d.ts +2 -0
  199. package/dist/types/src/components/MessagePanel/index.d.ts.map +1 -0
  200. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  201. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
  202. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +163 -4
  203. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  204. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  205. package/dist/types/src/components/ResponsiveGrid/{ResponsiveContainer.d.ts → ResponsivePanel.d.ts} +4 -4
  206. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.d.ts.map +1 -0
  207. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.stories.d.ts +168 -0
  208. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.stories.d.ts.map +1 -0
  209. package/dist/types/src/components/ResponsiveGrid/index.d.ts +1 -1
  210. package/dist/types/src/components/ResponsiveGrid/index.d.ts.map +1 -1
  211. package/dist/types/src/components/index.d.ts +2 -9
  212. package/dist/types/src/components/index.d.ts.map +1 -1
  213. package/dist/types/src/containers/CallDebugPanel/CallDebugPanel.d.ts +15 -0
  214. package/dist/types/src/containers/CallDebugPanel/CallDebugPanel.d.ts.map +1 -0
  215. package/dist/types/src/containers/CallDebugPanel/index.d.ts +3 -0
  216. package/dist/types/src/containers/CallDebugPanel/index.d.ts.map +1 -0
  217. package/dist/types/src/{components → containers/CallSidebar}/CallSidebar.d.ts +0 -1
  218. package/dist/types/src/containers/CallSidebar/CallSidebar.d.ts.map +1 -0
  219. package/dist/types/src/containers/CallSidebar/index.d.ts +3 -0
  220. package/dist/types/src/containers/CallSidebar/index.d.ts.map +1 -0
  221. package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts +12 -0
  222. package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts.map +1 -0
  223. package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts +166 -0
  224. package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts.map +1 -0
  225. package/dist/types/src/containers/ChannelContainer/index.d.ts +3 -0
  226. package/dist/types/src/containers/ChannelContainer/index.d.ts.map +1 -0
  227. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts +17 -0
  228. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +1 -0
  229. package/dist/types/src/containers/ChatContainer/ChatContainer.stories.d.ts +166 -0
  230. package/dist/types/src/containers/ChatContainer/ChatContainer.stories.d.ts.map +1 -0
  231. package/dist/types/src/containers/ChatContainer/index.d.ts +4 -0
  232. package/dist/types/src/containers/ChatContainer/index.d.ts.map +1 -0
  233. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts +6 -0
  234. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts.map +1 -0
  235. package/dist/types/src/containers/ThreadCompanion/index.d.ts +3 -0
  236. package/dist/types/src/containers/ThreadCompanion/index.d.ts.map +1 -0
  237. package/dist/types/src/containers/ThreadSettings/ThreadSettings.d.ts +8 -0
  238. package/dist/types/src/containers/ThreadSettings/ThreadSettings.d.ts.map +1 -0
  239. package/dist/types/src/containers/ThreadSettings/index.d.ts +3 -0
  240. package/dist/types/src/containers/ThreadSettings/index.d.ts.map +1 -0
  241. package/dist/types/src/containers/index.d.ts +8 -0
  242. package/dist/types/src/containers/index.d.ts.map +1 -0
  243. package/dist/types/src/{components/command-extension.d.ts → extensions/command.d.ts} +1 -1
  244. package/dist/types/src/extensions/command.d.ts.map +1 -0
  245. package/dist/types/src/extensions/index.d.ts +1 -0
  246. package/dist/types/src/extensions/index.d.ts.map +1 -1
  247. package/dist/types/src/extensions/threads.d.ts +8 -3
  248. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  249. package/dist/types/src/functions/create-proposals.d.ts +13 -0
  250. package/dist/types/src/functions/create-proposals.d.ts.map +1 -0
  251. package/dist/types/src/functions/index.d.ts +14 -0
  252. package/dist/types/src/functions/index.d.ts.map +1 -0
  253. package/dist/types/src/hooks/analytics.d.ts +2 -3
  254. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  255. package/dist/types/src/hooks/index.d.ts +2 -1
  256. package/dist/types/src/hooks/index.d.ts.map +1 -1
  257. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
  258. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
  259. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +1 -1
  260. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -1
  261. package/dist/types/src/index.d.ts +1 -1
  262. package/dist/types/src/index.d.ts.map +1 -1
  263. package/dist/types/src/meta.d.ts +3 -4
  264. package/dist/types/src/meta.d.ts.map +1 -1
  265. package/dist/types/src/testing/data.d.ts +5 -0
  266. package/dist/types/src/testing/data.d.ts.map +1 -0
  267. package/dist/types/src/testing/stories.d.ts +2 -1
  268. package/dist/types/src/testing/stories.d.ts.map +1 -1
  269. package/dist/types/src/translations.d.ts +81 -7
  270. package/dist/types/src/translations.d.ts.map +1 -1
  271. package/dist/types/src/types/Channel.d.ts +711 -0
  272. package/dist/types/src/types/Channel.d.ts.map +1 -0
  273. package/dist/types/src/types/capabilities.d.ts +23 -0
  274. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  275. package/dist/types/src/types/index.d.ts +2 -1
  276. package/dist/types/src/types/index.d.ts.map +1 -1
  277. package/dist/types/src/types/types.d.ts +3300 -365
  278. package/dist/types/src/types/types.d.ts.map +1 -1
  279. package/dist/types/tsconfig.tsbuildinfo +1 -1
  280. package/package.json +93 -66
  281. package/src/ThreadPlugin.tsx +92 -130
  282. package/src/blueprints/index.ts +5 -0
  283. package/src/blueprints/thread-blueprint.ts +40 -0
  284. package/src/calls/call-manager.ts +78 -54
  285. package/src/calls/call-swarm-synchronizer.ts +3 -3
  286. package/src/calls/media-manager.ts +67 -38
  287. package/src/calls/types.ts +8 -4
  288. package/src/calls/util/calls-service.ts +66 -15
  289. package/src/calls/util/stub-media-streams.ts +64 -7
  290. package/src/calls/util/task-scheduling.ts +4 -4
  291. package/src/calls-service.stories.tsx +79 -66
  292. package/src/capabilities/app-graph-builder/app-graph-builder.ts +203 -0
  293. package/src/capabilities/app-graph-builder/index.ts +7 -0
  294. package/src/capabilities/blueprint-definition/blueprint-definition.ts +17 -0
  295. package/src/capabilities/blueprint-definition/index.ts +7 -0
  296. package/src/capabilities/call-manager/call-manager.ts +26 -0
  297. package/src/capabilities/call-manager/index.ts +7 -0
  298. package/src/capabilities/index.ts +9 -12
  299. package/src/capabilities/markdown/index.ts +7 -0
  300. package/src/capabilities/markdown/markdown.ts +81 -0
  301. package/src/capabilities/operation-resolver/index.ts +7 -0
  302. package/src/capabilities/operation-resolver/operation-resolver.ts +392 -0
  303. package/src/capabilities/react-root/index.ts +7 -0
  304. package/src/capabilities/react-root/react-root.tsx +20 -0
  305. package/src/capabilities/react-surface/index.ts +7 -0
  306. package/src/capabilities/react-surface/react-surface.tsx +101 -0
  307. package/src/capabilities/settings/index.ts +7 -0
  308. package/src/capabilities/settings/settings.ts +34 -0
  309. package/src/capabilities/state/index.ts +7 -0
  310. package/src/capabilities/state/state.ts +22 -0
  311. package/src/components/Call/Call.tsx +11 -6
  312. package/src/components/Call/Toolbar.tsx +40 -33
  313. package/src/components/CommentsPanel/CommentsPanel.stories.tsx +93 -0
  314. package/src/components/CommentsPanel/CommentsPanel.tsx +71 -0
  315. package/src/components/{CommentsThreadContainer.tsx → CommentsPanel/CommentsThread.tsx} +60 -55
  316. package/src/components/CommentsPanel/index.ts +6 -0
  317. package/src/components/Lobby/Lobby.tsx +13 -11
  318. package/src/components/Media/AudioStream.tsx +2 -2
  319. package/src/components/Media/VideoObject.stories.tsx +37 -29
  320. package/src/components/Media/VideoObject.tsx +1 -1
  321. package/src/components/MessagePanel/MessagePanel.tsx +216 -0
  322. package/src/components/MessagePanel/index.ts +5 -0
  323. package/src/components/Participant/Participant.tsx +34 -15
  324. package/src/components/Participant/ParticipantGrid.tsx +2 -1
  325. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +45 -43
  326. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +5 -5
  327. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +9 -6
  328. package/src/components/ResponsiveGrid/{ResponsiveContainer.stories.tsx → ResponsivePanel.stories.tsx} +11 -11
  329. package/src/components/ResponsiveGrid/{ResponsiveContainer.tsx → ResponsivePanel.tsx} +4 -4
  330. package/src/components/ResponsiveGrid/index.ts +1 -1
  331. package/src/components/index.ts +2 -13
  332. package/src/containers/CallDebugPanel/CallDebugPanel.tsx +172 -0
  333. package/src/containers/CallDebugPanel/index.ts +7 -0
  334. package/src/containers/CallSidebar/CallSidebar.tsx +17 -0
  335. package/src/containers/CallSidebar/index.ts +7 -0
  336. package/src/containers/ChannelContainer/ChannelContainer.stories.tsx +59 -0
  337. package/src/{components → containers/ChannelContainer}/ChannelContainer.tsx +81 -59
  338. package/src/containers/ChannelContainer/index.ts +7 -0
  339. package/src/containers/ChatContainer/ChatContainer.stories.tsx +87 -0
  340. package/src/{components → containers/ChatContainer}/ChatContainer.tsx +67 -63
  341. package/src/containers/ChatContainer/index.ts +8 -0
  342. package/src/containers/ThreadCompanion/ThreadCompanion.tsx +199 -0
  343. package/src/containers/ThreadCompanion/index.ts +7 -0
  344. package/src/containers/ThreadSettings/ThreadSettings.tsx +22 -0
  345. package/src/containers/ThreadSettings/index.ts +7 -0
  346. package/src/containers/index.ts +12 -0
  347. package/src/{components/command-extension.ts → extensions/command.ts} +7 -4
  348. package/src/extensions/index.ts +1 -0
  349. package/src/extensions/threads.ts +88 -44
  350. package/src/functions/create-proposals.ts +57 -0
  351. package/src/functions/index.ts +9 -0
  352. package/src/hooks/analytics.ts +22 -21
  353. package/src/hooks/index.ts +3 -1
  354. package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
  355. package/src/hooks/useDebugMode.ts +1 -1
  356. package/src/hooks/useVideoStreamTrack.tsx +6 -3
  357. package/src/index.ts +1 -1
  358. package/src/meta.ts +11 -7
  359. package/src/testing/data.ts +49 -0
  360. package/src/testing/stories.ts +18 -16
  361. package/src/translations.ts +10 -4
  362. package/src/types/Channel.ts +36 -0
  363. package/src/types/capabilities.ts +34 -0
  364. package/src/types/index.ts +2 -1
  365. package/src/types/types.ts +170 -82
  366. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  367. package/src/typings.d.ts +8 -0
  368. package/src/util.ts +1 -1
  369. package/dist/lib/browser/ChannelContainer-IY2UIRLF.mjs +0 -16
  370. package/dist/lib/browser/ChatContainer-AIGIWAUG.mjs +0 -15
  371. package/dist/lib/browser/app-graph-builder-N7BE5TYW.mjs +0 -171
  372. package/dist/lib/browser/app-graph-builder-N7BE5TYW.mjs.map +0 -7
  373. package/dist/lib/browser/call-manager-NIPDYUVD.mjs +0 -24
  374. package/dist/lib/browser/call-manager-NIPDYUVD.mjs.map +0 -7
  375. package/dist/lib/browser/chunk-4OYAYON2.mjs +0 -21
  376. package/dist/lib/browser/chunk-4OYAYON2.mjs.map +0 -7
  377. package/dist/lib/browser/chunk-6NSMBO3B.mjs.map +0 -7
  378. package/dist/lib/browser/chunk-ERWASUQK.mjs.map +0 -7
  379. package/dist/lib/browser/chunk-EV4JWI7L.mjs +0 -17
  380. package/dist/lib/browser/chunk-EV4JWI7L.mjs.map +0 -7
  381. package/dist/lib/browser/chunk-GCLD5ESP.mjs +0 -137
  382. package/dist/lib/browser/chunk-GCLD5ESP.mjs.map +0 -7
  383. package/dist/lib/browser/chunk-GERVMFQW.mjs.map +0 -7
  384. package/dist/lib/browser/chunk-KWPRNHTK.mjs +0 -984
  385. package/dist/lib/browser/chunk-KWPRNHTK.mjs.map +0 -7
  386. package/dist/lib/browser/chunk-LGSDKXPF.mjs +0 -18
  387. package/dist/lib/browser/chunk-LGSDKXPF.mjs.map +0 -7
  388. package/dist/lib/browser/chunk-VUWC4IJM.mjs +0 -479
  389. package/dist/lib/browser/chunk-VUWC4IJM.mjs.map +0 -7
  390. package/dist/lib/browser/chunk-XLPJXUKO.mjs +0 -367
  391. package/dist/lib/browser/chunk-XLPJXUKO.mjs.map +0 -7
  392. package/dist/lib/browser/chunk-ZE7KWN36.mjs.map +0 -7
  393. package/dist/lib/browser/intent-resolver-JFGLZ6VI.mjs +0 -369
  394. package/dist/lib/browser/intent-resolver-JFGLZ6VI.mjs.map +0 -7
  395. package/dist/lib/browser/markdown-GEXBVJYN.mjs +0 -169
  396. package/dist/lib/browser/markdown-GEXBVJYN.mjs.map +0 -7
  397. package/dist/lib/browser/react-root-X4UIVGTX.mjs +0 -28
  398. package/dist/lib/browser/react-root-X4UIVGTX.mjs.map +0 -7
  399. package/dist/lib/browser/react-surface-YCYEFBPM.mjs +0 -109
  400. package/dist/lib/browser/react-surface-YCYEFBPM.mjs.map +0 -7
  401. package/dist/lib/browser/settings-E32MTL7A.mjs +0 -22
  402. package/dist/lib/browser/settings-E32MTL7A.mjs.map +0 -7
  403. package/dist/lib/browser/state-H6CYONWE.mjs +0 -34
  404. package/dist/lib/browser/state-H6CYONWE.mjs.map +0 -7
  405. package/dist/lib/node-esm/ChannelContainer-DET6T5N2.mjs +0 -17
  406. package/dist/lib/node-esm/ChatContainer-IQUWU426.mjs +0 -16
  407. package/dist/lib/node-esm/app-graph-builder-VCW76Z6V.mjs +0 -172
  408. package/dist/lib/node-esm/app-graph-builder-VCW76Z6V.mjs.map +0 -7
  409. package/dist/lib/node-esm/call-manager-D6O5ZJJ4.mjs +0 -25
  410. package/dist/lib/node-esm/call-manager-D6O5ZJJ4.mjs.map +0 -7
  411. package/dist/lib/node-esm/chunk-25ABSYP2.mjs.map +0 -7
  412. package/dist/lib/node-esm/chunk-2MFNK53T.mjs +0 -480
  413. package/dist/lib/node-esm/chunk-2MFNK53T.mjs.map +0 -7
  414. package/dist/lib/node-esm/chunk-57XR3LEF.mjs.map +0 -7
  415. package/dist/lib/node-esm/chunk-75RJ5DJI.mjs +0 -19
  416. package/dist/lib/node-esm/chunk-75RJ5DJI.mjs.map +0 -7
  417. package/dist/lib/node-esm/chunk-C3XFMUAY.mjs +0 -985
  418. package/dist/lib/node-esm/chunk-C3XFMUAY.mjs.map +0 -7
  419. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs +0 -19
  420. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs.map +0 -7
  421. package/dist/lib/node-esm/chunk-GW37AAM4.mjs +0 -23
  422. package/dist/lib/node-esm/chunk-GW37AAM4.mjs.map +0 -7
  423. package/dist/lib/node-esm/chunk-IHDNQLLR.mjs.map +0 -7
  424. package/dist/lib/node-esm/chunk-J4NSON5Q.mjs +0 -368
  425. package/dist/lib/node-esm/chunk-J4NSON5Q.mjs.map +0 -7
  426. package/dist/lib/node-esm/chunk-OU5BYIDO.mjs.map +0 -7
  427. package/dist/lib/node-esm/chunk-TDFHTCZZ.mjs +0 -138
  428. package/dist/lib/node-esm/chunk-TDFHTCZZ.mjs.map +0 -7
  429. package/dist/lib/node-esm/intent-resolver-OXGNQ44Y.mjs +0 -370
  430. package/dist/lib/node-esm/intent-resolver-OXGNQ44Y.mjs.map +0 -7
  431. package/dist/lib/node-esm/markdown-LIJZDK2J.mjs +0 -170
  432. package/dist/lib/node-esm/markdown-LIJZDK2J.mjs.map +0 -7
  433. package/dist/lib/node-esm/react-root-M7J6PZVW.mjs +0 -29
  434. package/dist/lib/node-esm/react-root-M7J6PZVW.mjs.map +0 -7
  435. package/dist/lib/node-esm/react-surface-IRSEKM42.mjs +0 -110
  436. package/dist/lib/node-esm/react-surface-IRSEKM42.mjs.map +0 -7
  437. package/dist/lib/node-esm/settings-SJ24YG7M.mjs +0 -23
  438. package/dist/lib/node-esm/settings-SJ24YG7M.mjs.map +0 -7
  439. package/dist/lib/node-esm/state-D7WNDT3N.mjs +0 -35
  440. package/dist/lib/node-esm/state-D7WNDT3N.mjs.map +0 -7
  441. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  442. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  443. package/dist/types/src/capabilities/call-manager.d.ts +0 -5
  444. package/dist/types/src/capabilities/call-manager.d.ts.map +0 -1
  445. package/dist/types/src/capabilities/capabilities.d.ts +0 -27
  446. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  447. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  448. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  449. package/dist/types/src/capabilities/markdown.d.ts +0 -4
  450. package/dist/types/src/capabilities/markdown.d.ts.map +0 -1
  451. package/dist/types/src/capabilities/react-root.d.ts +0 -7
  452. package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
  453. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  454. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  455. package/dist/types/src/capabilities/settings.d.ts +0 -4
  456. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  457. package/dist/types/src/capabilities/state.d.ts +0 -7
  458. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  459. package/dist/types/src/components/CallDebugPanel.d.ts +0 -8
  460. package/dist/types/src/components/CallDebugPanel.d.ts.map +0 -1
  461. package/dist/types/src/components/CallSidebar.d.ts.map +0 -1
  462. package/dist/types/src/components/ChannelContainer.d.ts +0 -14
  463. package/dist/types/src/components/ChannelContainer.d.ts.map +0 -1
  464. package/dist/types/src/components/ChannelContainer.stories.d.ts +0 -10
  465. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +0 -1
  466. package/dist/types/src/components/Chat.stories.d.ts +0 -7
  467. package/dist/types/src/components/Chat.stories.d.ts.map +0 -1
  468. package/dist/types/src/components/ChatContainer.d.ts +0 -17
  469. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  470. package/dist/types/src/components/Comments.stories.d.ts +0 -6
  471. package/dist/types/src/components/Comments.stories.d.ts.map +0 -1
  472. package/dist/types/src/components/CommentsContainer.d.ts +0 -13
  473. package/dist/types/src/components/CommentsContainer.d.ts.map +0 -1
  474. package/dist/types/src/components/CommentsThreadContainer.d.ts +0 -14
  475. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +0 -1
  476. package/dist/types/src/components/MessageContainer.d.ts +0 -11
  477. package/dist/types/src/components/MessageContainer.d.ts.map +0 -1
  478. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts.map +0 -1
  479. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +0 -10
  480. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +0 -1
  481. package/dist/types/src/components/ThreadComplementary.d.ts +0 -5
  482. package/dist/types/src/components/ThreadComplementary.d.ts.map +0 -1
  483. package/dist/types/src/components/ThreadSettings.d.ts +0 -6
  484. package/dist/types/src/components/ThreadSettings.d.ts.map +0 -1
  485. package/dist/types/src/components/command-extension.d.ts.map +0 -1
  486. package/dist/types/src/components/testing.d.ts +0 -4
  487. package/dist/types/src/components/testing.d.ts.map +0 -1
  488. package/dist/types/src/types/schema.d.ts +0 -162
  489. package/dist/types/src/types/schema.d.ts.map +0 -1
  490. package/src/capabilities/app-graph-builder.ts +0 -180
  491. package/src/capabilities/call-manager.ts +0 -19
  492. package/src/capabilities/capabilities.ts +0 -33
  493. package/src/capabilities/intent-resolver.ts +0 -314
  494. package/src/capabilities/markdown.ts +0 -68
  495. package/src/capabilities/react-root.tsx +0 -17
  496. package/src/capabilities/react-surface.tsx +0 -88
  497. package/src/capabilities/settings.ts +0 -19
  498. package/src/capabilities/state.ts +0 -25
  499. package/src/components/CallDebugPanel.tsx +0 -115
  500. package/src/components/CallSidebar.tsx +0 -17
  501. package/src/components/ChannelContainer.stories.tsx +0 -58
  502. package/src/components/Chat.stories.tsx +0 -88
  503. package/src/components/Comments.stories.tsx +0 -92
  504. package/src/components/CommentsContainer.tsx +0 -71
  505. package/src/components/MessageContainer.tsx +0 -151
  506. package/src/components/ThreadComplementary.tsx +0 -151
  507. package/src/components/ThreadSettings.tsx +0 -17
  508. package/src/components/testing.ts +0 -29
  509. package/src/types/schema.ts +0 -33
  510. /package/dist/lib/browser/{ChannelContainer-IY2UIRLF.mjs.map → ChannelContainer-EQZXMQMV.mjs.map} +0 -0
  511. /package/dist/lib/browser/{ChatContainer-AIGIWAUG.mjs.map → ChatContainer-VPCJ2AMF.mjs.map} +0 -0
  512. /package/dist/lib/{node-esm/ChannelContainer-DET6T5N2.mjs.map → browser/blueprints/index.mjs.map} +0 -0
  513. /package/dist/lib/{node-esm/ChatContainer-IQUWU426.mjs.map → browser/chunk-J5LGTIGS.mjs.map} +0 -0
@@ -1,11 +1,13 @@
1
1
  import {
2
2
  createBlackCanvasStreamTrack,
3
3
  createInaudibleAudioStreamTrack
4
- } from "./chunk-6NSMBO3B.mjs";
4
+ } from "./chunk-ISCHODBV.mjs";
5
5
 
6
6
  // src/calls/types.ts
7
+ import { invariant } from "@dxos/invariant";
7
8
  import { buf } from "@dxos/protocols/buf";
8
9
  import { UserStateSchema } from "@dxos/protocols/buf/dxos/edge/calls_pb";
10
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/types.ts";
9
11
  var CALLS_URL = "https://calls-service.dxos.workers.dev";
10
12
  var codec = {
11
13
  encode: (message) => {
@@ -17,14 +19,42 @@ var codec = {
17
19
  };
18
20
  var TrackNameCodec = {
19
21
  encode: (trackData) => {
20
- return trackData.sessionId + "/" + trackData.trackName;
22
+ invariant(trackData.sessionId, void 0, {
23
+ F: __dxlog_file,
24
+ L: 65,
25
+ S: void 0,
26
+ A: [
27
+ "trackData.sessionId",
28
+ ""
29
+ ]
30
+ });
31
+ invariant(trackData.trackName, void 0, {
32
+ F: __dxlog_file,
33
+ L: 66,
34
+ S: void 0,
35
+ A: [
36
+ "trackData.trackName",
37
+ ""
38
+ ]
39
+ });
40
+ invariant(trackData.mid, void 0, {
41
+ F: __dxlog_file,
42
+ L: 67,
43
+ S: void 0,
44
+ A: [
45
+ "trackData.mid",
46
+ ""
47
+ ]
48
+ });
49
+ return trackData.sessionId + "/" + trackData.trackName + "/" + trackData.mid;
21
50
  },
22
51
  decode: (name) => {
23
- const [sessionId, trackName] = name.split("/");
52
+ const [sessionId, trackName, mid] = name.split("/");
24
53
  return {
25
54
  sessionId,
26
55
  trackName,
27
- location: "remote"
56
+ location: "remote",
57
+ mid
28
58
  };
29
59
  }
30
60
  };
@@ -34,7 +64,7 @@ import md5Hex from "md5-hex";
34
64
  import { DeferredTask, Event, scheduleTaskInterval, synchronized } from "@dxos/async";
35
65
  import { Context, Resource } from "@dxos/context";
36
66
  import { generateName } from "@dxos/display-name";
37
- import { invariant } from "@dxos/invariant";
67
+ import { invariant as invariant2 } from "@dxos/invariant";
38
68
  import { PublicKey } from "@dxos/keys";
39
69
  import { log } from "@dxos/log";
40
70
  import { buf as buf2 } from "@dxos/protocols/buf";
@@ -47,22 +77,23 @@ function _ts_decorate(decorators, target, key, desc) {
47
77
  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;
48
78
  return c > 3 && r && Object.defineProperty(target, key, r), r;
49
79
  }
50
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-swarm-synchronizer.ts";
80
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-swarm-synchronizer.ts";
51
81
  var DISCONNECTED_ABRUPT_TIMEOUT = 1e4;
52
82
  var CallSwarmSynchronizer = class extends Resource {
83
+ stateUpdated = new Event();
84
+ _state = {
85
+ activities: {}
86
+ };
87
+ _networkService;
88
+ _lastSwarmEvent = void 0;
89
+ _reconcileSwarmStateTask = void 0;
90
+ _identityKey = void 0;
91
+ _deviceKey = void 0;
92
+ _displayName = void 0;
93
+ _swarmCtx = void 0;
94
+ _sendStateTask = void 0;
53
95
  constructor({ networkService }) {
54
96
  super();
55
- this.stateUpdated = new Event();
56
- this._state = {
57
- activities: {}
58
- };
59
- this._lastSwarmEvent = void 0;
60
- this._reconcileSwarmStateTask = void 0;
61
- this._identityKey = void 0;
62
- this._deviceKey = void 0;
63
- this._displayName = void 0;
64
- this._swarmCtx = void 0;
65
- this._sendStateTask = void 0;
66
97
  this._networkService = networkService;
67
98
  }
68
99
  /**
@@ -130,7 +161,7 @@ var CallSwarmSynchronizer = class extends Resource {
130
161
  log.verbose("joined to a different room", {
131
162
  roomId
132
163
  }, {
133
- F: __dxlog_file,
164
+ F: __dxlog_file2,
134
165
  L: 152,
135
166
  S: this,
136
167
  C: (f, a) => f(...a)
@@ -152,8 +183,8 @@ var CallSwarmSynchronizer = class extends Resource {
152
183
  this._reconcileSwarmStateTask = void 0;
153
184
  }
154
185
  async join() {
155
- invariant(this._state.roomId, void 0, {
156
- F: __dxlog_file,
186
+ invariant2(this._state.roomId, void 0, {
187
+ F: __dxlog_file2,
157
188
  L: 176,
158
189
  S: this,
159
190
  A: [
@@ -161,8 +192,8 @@ var CallSwarmSynchronizer = class extends Resource {
161
192
  ""
162
193
  ]
163
194
  });
164
- invariant(!this._swarmCtx, "Already joined", {
165
- F: __dxlog_file,
195
+ invariant2(!this._swarmCtx, "Already joined", {
196
+ F: __dxlog_file2,
166
197
  L: 177,
167
198
  S: this,
168
199
  A: [
@@ -171,7 +202,7 @@ var CallSwarmSynchronizer = class extends Resource {
171
202
  ]
172
203
  });
173
204
  this._swarmCtx = new Context(void 0, {
174
- F: __dxlog_file,
205
+ F: __dxlog_file2,
175
206
  L: 179
176
207
  });
177
208
  const topic = getTopic(this._state.roomId);
@@ -182,7 +213,7 @@ var CallSwarmSynchronizer = class extends Resource {
182
213
  peerKey: this._deviceKey
183
214
  }
184
215
  }, {
185
- F: __dxlog_file,
216
+ F: __dxlog_file2,
186
217
  L: 181,
187
218
  S: this,
188
219
  C: (f, a) => f(...a)
@@ -201,7 +232,7 @@ var CallSwarmSynchronizer = class extends Resource {
201
232
  peerKey: this._deviceKey
202
233
  }
203
234
  }, {
204
- F: __dxlog_file,
235
+ F: __dxlog_file2,
205
236
  L: 188,
206
237
  S: this,
207
238
  C: (f, a) => f(...a)
@@ -213,7 +244,7 @@ var CallSwarmSynchronizer = class extends Resource {
213
244
  peerKey: this._deviceKey
214
245
  }
215
246
  }).catch((err) => log.catch(err, void 0, {
216
- F: __dxlog_file,
247
+ F: __dxlog_file2,
217
248
  L: 194,
218
249
  S: this,
219
250
  C: (f, a) => f(...a)
@@ -281,8 +312,8 @@ var CallSwarmSynchronizer = class extends Resource {
281
312
  }
282
313
  async _reconcileSwarmState() {
283
314
  const swarmEvent = this._lastSwarmEvent;
284
- invariant(swarmEvent, void 0, {
285
- F: __dxlog_file,
315
+ invariant2(swarmEvent, void 0, {
316
+ F: __dxlog_file2,
286
317
  L: 273,
287
318
  S: this,
288
319
  A: [
@@ -302,7 +333,7 @@ var CallSwarmSynchronizer = class extends Resource {
302
333
  error,
303
334
  peer
304
335
  }, {
305
- F: __dxlog_file,
336
+ F: __dxlog_file2,
306
337
  L: 290,
307
338
  S: this,
308
339
  C: (f, a) => f(...a)
@@ -315,7 +346,7 @@ var CallSwarmSynchronizer = class extends Resource {
315
346
  log("reconciling swarm state", {
316
347
  users
317
348
  }, {
318
- F: __dxlog_file,
349
+ F: __dxlog_file2,
319
350
  L: 297,
320
351
  S: this,
321
352
  C: (f, a) => f(...a)
@@ -403,13 +434,15 @@ var monitorAudioLevel = ({ mediaStreamTrack, intervalMs = 1e3 / 10, onMeasure })
403
434
  };
404
435
 
405
436
  // src/calls/util/calls-service.ts
406
- import { PersistentLifecycle } from "@dxos/async";
437
+ import { PersistentLifecycle, Trigger, scheduleTask } from "@dxos/async";
407
438
  import { Resource as Resource2 } from "@dxos/context";
408
- import { invariant as invariant2 } from "@dxos/invariant";
439
+ import { invariant as invariant3 } from "@dxos/invariant";
409
440
  import { log as log2 } from "@dxos/log";
410
441
 
411
442
  // src/calls/util/history-cache.ts
412
443
  var HistoryCache = class {
444
+ _limit;
445
+ _messages;
413
446
  constructor(limit = 100) {
414
447
  this._limit = limit;
415
448
  this._messages = [];
@@ -483,20 +516,21 @@ var BulkRequestDispatcher = class {
483
516
  };
484
517
 
485
518
  // src/calls/util/calls-service.ts
486
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/calls-service.ts";
519
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/calls-service.ts";
487
520
  var NETWORK_TIMEOUT = 5e3;
488
521
  var CallsServicePeer = class extends Resource2 {
522
+ history = new HistoryCache(100);
523
+ _persistentLifecycle = new PersistentLifecycle({
524
+ start: () => this._startSession(),
525
+ stop: (session) => this._stopSession(session)
526
+ });
527
+ _config;
528
+ taskScheduler = new FIFOScheduler();
529
+ pushTrackDispatcher = new BulkRequestDispatcher(32);
530
+ pullTrackDispatcher = new BulkRequestDispatcher(32);
531
+ closeTrackDispatcher = new BulkRequestDispatcher(32);
489
532
  constructor(config) {
490
533
  super();
491
- this.history = new HistoryCache(100);
492
- this._persistentLifecycle = new PersistentLifecycle({
493
- start: () => this._startSession(),
494
- stop: (session) => this._stopSession(session)
495
- });
496
- this.taskScheduler = new FIFOScheduler();
497
- this.pushTrackDispatcher = new BulkRequestDispatcher(32);
498
- this.pullTrackDispatcher = new BulkRequestDispatcher(32);
499
- this.closeTrackDispatcher = new BulkRequestDispatcher(32);
500
534
  this._config = config;
501
535
  }
502
536
  async _open(ctx) {
@@ -526,11 +560,11 @@ var CallsServicePeer = class extends Resource2 {
526
560
  });
527
561
  peerConnection.addEventListener("connectionstatechange", () => {
528
562
  if (peerConnection.connectionState === "failed" || peerConnection.connectionState === "closed") {
529
- log2.warn("calls connection failed", {
563
+ log2.info("calls connection failed", {
530
564
  state: peerConnection.connectionState
531
565
  }, {
532
- F: __dxlog_file2,
533
- L: 118,
566
+ F: __dxlog_file3,
567
+ L: 121,
534
568
  S: this,
535
569
  C: (f, a) => f(...a)
536
570
  });
@@ -541,11 +575,11 @@ var CallsServicePeer = class extends Resource2 {
541
575
  peerConnection.addEventListener("iceconnectionstatechange", () => {
542
576
  clearTimeout(iceTimeout);
543
577
  if (peerConnection.iceConnectionState === "failed" || peerConnection.iceConnectionState === "closed") {
544
- log2.warn("calls connection to ICEs failed", {
578
+ log2.info("calls connection to ICEs failed", {
545
579
  state: peerConnection.iceConnectionState
546
580
  }, {
547
- F: __dxlog_file2,
548
- L: 127,
581
+ F: __dxlog_file3,
582
+ L: 130,
549
583
  S: this,
550
584
  C: (f, a) => f(...a)
551
585
  });
@@ -555,19 +589,19 @@ var CallsServicePeer = class extends Resource2 {
555
589
  iceTimeout = window.setTimeout(() => {
556
590
  if (peerConnection.iceConnectionState === "connected") {
557
591
  log2.info("calls iceConnectionState is connected", void 0, {
558
- F: __dxlog_file2,
559
- L: 136,
592
+ F: __dxlog_file3,
593
+ L: 139,
560
594
  S: this,
561
595
  C: (f, a) => f(...a)
562
596
  });
563
597
  return;
564
598
  }
565
- log2.warn("calls iceConnectionState timed out", {
599
+ log2.info("calls iceConnectionState timed out", {
566
600
  state: peerConnection.iceConnectionState,
567
601
  timeoutSeconds
568
602
  }, {
569
- F: __dxlog_file2,
570
- L: 140,
603
+ F: __dxlog_file3,
604
+ L: 143,
571
605
  S: this,
572
606
  C: (f, a) => f(...a)
573
607
  });
@@ -579,8 +613,8 @@ var CallsServicePeer = class extends Resource2 {
579
613
  }
580
614
  async _initiateCallSession() {
581
615
  log2("creating new session", void 0, {
582
- F: __dxlog_file2,
583
- L: 150,
616
+ F: __dxlog_file3,
617
+ L: 153,
584
618
  S: this,
585
619
  C: (f, a) => f(...a)
586
620
  });
@@ -591,6 +625,7 @@ var CallsServicePeer = class extends Resource2 {
591
625
  }
592
626
  async _fetch(relativePath, requestInit) {
593
627
  this.history.push({
628
+ endpoint: relativePath,
594
629
  type: "request",
595
630
  time: (/* @__PURE__ */ new Date()).toISOString(),
596
631
  method: requestInit?.method ?? "GET",
@@ -605,8 +640,8 @@ var CallsServicePeer = class extends Resource2 {
605
640
  status: response.status,
606
641
  text: await response.text()
607
642
  }, {
608
- F: __dxlog_file2,
609
- L: 165,
643
+ F: __dxlog_file3,
644
+ L: 169,
610
645
  S: this,
611
646
  C: (f, a) => f(...a)
612
647
  });
@@ -615,6 +650,7 @@ var CallsServicePeer = class extends Resource2 {
615
650
  try {
616
651
  const data = await response.clone().json();
617
652
  this.history.push({
653
+ endpoint: relativePath,
618
654
  type: "response",
619
655
  time: (/* @__PURE__ */ new Date()).toISOString(),
620
656
  status: response.status,
@@ -627,6 +663,7 @@ var CallsServicePeer = class extends Resource2 {
627
663
  } catch (error) {
628
664
  const text = await response.text();
629
665
  this.history.push({
666
+ endpoint: relativePath,
630
667
  type: "response",
631
668
  time: (/* @__PURE__ */ new Date()).toISOString(),
632
669
  status: response.status,
@@ -637,8 +674,8 @@ var CallsServicePeer = class extends Resource2 {
637
674
  text,
638
675
  status: response.status
639
676
  }, {
640
- F: __dxlog_file2,
641
- L: 190,
677
+ F: __dxlog_file3,
678
+ L: 196,
642
679
  S: this,
643
680
  C: (f, a) => f(...a)
644
681
  });
@@ -647,8 +684,8 @@ var CallsServicePeer = class extends Resource2 {
647
684
  }
648
685
  async _pushTrackInBulk({ ctx, peerConnection, transceiver, sessionId, trackName }) {
649
686
  log2.verbose("pushing track ", trackName, {
650
- F: __dxlog_file2,
651
- L: 212,
687
+ F: __dxlog_file3,
688
+ L: 218,
652
689
  S: this,
653
690
  C: (f, a) => f(...a)
654
691
  });
@@ -673,9 +710,9 @@ var CallsServicePeer = class extends Resource2 {
673
710
  }))
674
711
  })
675
712
  });
676
- invariant2(response.tracks !== void 0, void 0, {
677
- F: __dxlog_file2,
678
- L: 237,
713
+ invariant3(response.tracks !== void 0, void 0, {
714
+ F: __dxlog_file3,
715
+ L: 243,
679
716
  S: this,
680
717
  A: [
681
718
  "response.tracks !== undefined",
@@ -689,7 +726,7 @@ var CallsServicePeer = class extends Resource2 {
689
726
  return {
690
727
  tracks: response.tracks
691
728
  };
692
- })).then(({ tracks }) => {
729
+ })).then(async ({ tracks }) => {
693
730
  const trackData = tracks.find((t) => t.mid === transceiver.mid);
694
731
  if (trackData) {
695
732
  return {
@@ -699,19 +736,12 @@ var CallsServicePeer = class extends Resource2 {
699
736
  };
700
737
  } else {
701
738
  log2.error("missing track data", void 0, {
702
- F: __dxlog_file2,
703
- L: 257,
739
+ F: __dxlog_file3,
740
+ L: 267,
704
741
  S: this,
705
742
  C: (f, a) => f(...a)
706
743
  });
707
744
  }
708
- }).catch((err) => {
709
- log2.catch(err, void 0, {
710
- F: __dxlog_file2,
711
- L: 261,
712
- S: this,
713
- C: (f, a) => f(...a)
714
- });
715
745
  });
716
746
  const onDispose = async () => {
717
747
  if (transceiver.mid) {
@@ -724,9 +754,9 @@ var CallsServicePeer = class extends Resource2 {
724
754
  }
725
755
  async pushTrack({ track, encodings = [], ctx, previousTrack }) {
726
756
  await this.waitUntilOpen();
727
- invariant2(this.session, void 0, {
728
- F: __dxlog_file2,
729
- L: 288,
757
+ invariant3(this.session, void 0, {
758
+ F: __dxlog_file3,
759
+ L: 295,
730
760
  S: this,
731
761
  A: [
732
762
  "this.session",
@@ -738,8 +768,8 @@ var CallsServicePeer = class extends Resource2 {
738
768
  previousTrack,
739
769
  encodings
740
770
  }, {
741
- F: __dxlog_file2,
742
- L: 289,
771
+ F: __dxlog_file3,
772
+ L: 296,
743
773
  S: this,
744
774
  C: (f, a) => f(...a)
745
775
  });
@@ -751,8 +781,8 @@ var CallsServicePeer = class extends Resource2 {
751
781
  previousTrack,
752
782
  transceiver: transceiver2
753
783
  }, {
754
- F: __dxlog_file2,
755
- L: 293,
784
+ F: __dxlog_file3,
785
+ L: 300,
756
786
  S: this,
757
787
  C: (f, a) => f(...a)
758
788
  });
@@ -763,23 +793,23 @@ var CallsServicePeer = class extends Resource2 {
763
793
  previousTrack,
764
794
  transceiver: transceiver2
765
795
  }, {
766
- F: __dxlog_file2,
767
- L: 296,
796
+ F: __dxlog_file3,
797
+ L: 303,
768
798
  S: this,
769
799
  C: (f, a) => f(...a)
770
800
  });
771
801
  transceiver2.sender.replaceTrack(track).catch((err) => log2.catch(err, void 0, {
772
- F: __dxlog_file2,
773
- L: 297,
802
+ F: __dxlog_file3,
803
+ L: 304,
774
804
  S: this,
775
805
  C: (f, a) => f(...a)
776
806
  }));
777
807
  return previousTrack;
778
808
  }
779
809
  }
780
- invariant2(track, void 0, {
781
- F: __dxlog_file2,
782
- L: 301,
810
+ invariant3(track, void 0, {
811
+ F: __dxlog_file3,
812
+ L: 308,
783
813
  S: this,
784
814
  A: [
785
815
  "track",
@@ -791,8 +821,8 @@ var CallsServicePeer = class extends Resource2 {
791
821
  direction: "sendonly"
792
822
  });
793
823
  log2.verbose("creating transceiver", void 0, {
794
- F: __dxlog_file2,
795
- L: 306,
824
+ F: __dxlog_file3,
825
+ L: 313,
796
826
  S: this,
797
827
  C: (f, a) => f(...a)
798
828
  });
@@ -803,9 +833,9 @@ var CallsServicePeer = class extends Resource2 {
803
833
  sessionId: this.session.sessionId,
804
834
  trackName: stableId
805
835
  });
806
- invariant2(pushedTrackData, void 0, {
807
- F: __dxlog_file2,
808
- L: 315,
836
+ invariant3(pushedTrackData, void 0, {
837
+ F: __dxlog_file3,
838
+ L: 322,
809
839
  S: this,
810
840
  A: [
811
841
  "pushedTrackData",
@@ -821,8 +851,8 @@ var CallsServicePeer = class extends Resource2 {
821
851
  };
822
852
  });
823
853
  transceiver.sender.setParameters(parameters).catch((err) => log2.catch(err, void 0, {
824
- F: __dxlog_file2,
825
- L: 322,
854
+ F: __dxlog_file3,
855
+ L: 329,
826
856
  S: this,
827
857
  C: (f, a) => f(...a)
828
858
  }));
@@ -834,8 +864,8 @@ var CallsServicePeer = class extends Resource2 {
834
864
  log2("pulling track", {
835
865
  trackName: trackData.trackName
836
866
  }, {
837
- F: __dxlog_file2,
838
- L: 340,
867
+ F: __dxlog_file3,
868
+ L: 347,
839
869
  S: this,
840
870
  C: (f, a) => f(...a)
841
871
  });
@@ -849,9 +879,9 @@ var CallsServicePeer = class extends Resource2 {
849
879
  if (newTrackResponse.errorCode) {
850
880
  throw new Error(newTrackResponse.errorDescription);
851
881
  }
852
- invariant2(newTrackResponse.tracks, void 0, {
853
- F: __dxlog_file2,
854
- L: 353,
882
+ invariant3(newTrackResponse.tracks, void 0, {
883
+ F: __dxlog_file3,
884
+ L: 360,
855
885
  S: this,
856
886
  A: [
857
887
  "newTrackResponse.tracks",
@@ -897,18 +927,18 @@ var CallsServicePeer = class extends Resource2 {
897
927
  mid = trackInfo.mid;
898
928
  return track;
899
929
  }).catch((err) => log2.catch(err, void 0, {
900
- F: __dxlog_file2,
901
- L: 405,
930
+ F: __dxlog_file3,
931
+ L: 412,
902
932
  S: this,
903
933
  C: (f, a) => f(...a)
904
934
  }));
905
935
  } else {
906
- log2.warn("missing track info", {
936
+ log2.info("missing track info", {
907
937
  trackData,
908
938
  availableTracks: Array.from(trackMap.keys())
909
939
  }, {
910
- F: __dxlog_file2,
911
- L: 407,
940
+ F: __dxlog_file3,
941
+ L: 414,
912
942
  S: this,
913
943
  C: (f, a) => f(...a)
914
944
  });
@@ -917,8 +947,8 @@ var CallsServicePeer = class extends Resource2 {
917
947
  const onDispose = async () => {
918
948
  if (mid) {
919
949
  log2("closing pulled track ", trackData.trackName, {
920
- F: __dxlog_file2,
921
- L: 413,
950
+ F: __dxlog_file3,
951
+ L: 420,
922
952
  S: this,
923
953
  C: (f, a) => f(...a)
924
954
  });
@@ -932,9 +962,9 @@ var CallsServicePeer = class extends Resource2 {
932
962
  }
933
963
  async pullTrack({ ctx, trackData }) {
934
964
  await this.waitUntilOpen();
935
- invariant2(this.session, void 0, {
936
- F: __dxlog_file2,
937
- L: 434,
965
+ invariant3(this.session, void 0, {
966
+ F: __dxlog_file3,
967
+ L: 441,
938
968
  S: this,
939
969
  A: [
940
970
  "this.session",
@@ -1020,7 +1050,7 @@ var peerConnectionIsConnected = async (peerConnection) => {
1020
1050
 
1021
1051
  // src/calls/util/media.ts
1022
1052
  import { log as log3 } from "@dxos/log";
1023
- var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/media.ts";
1053
+ var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/media.ts";
1024
1054
  var getUserMediaTrack = async (kind, constraints = {}, deviceList) => {
1025
1055
  deviceList ??= (await getDeviceList()).filter((device) => device.kind === kind);
1026
1056
  const firstDevice = deviceList[0];
@@ -1032,7 +1062,7 @@ var getUserMediaTrack = async (kind, constraints = {}, deviceList) => {
1032
1062
  var acquireTrack = async (device, constraints) => {
1033
1063
  const { deviceId, label } = device;
1034
1064
  log3.info(`requesting ${label}`, void 0, {
1035
- F: __dxlog_file3,
1065
+ F: __dxlog_file4,
1036
1066
  L: 23,
1037
1067
  S: void 0,
1038
1068
  C: (f, a) => f(...a)
@@ -1082,8 +1112,20 @@ var START_SPEAKING_THRESHOLD = 0.05;
1082
1112
  var CONTINUE_SPEAKING_THRESHOLD = 0.02;
1083
1113
  var MIN_EVENT_INTERVAL = 100;
1084
1114
  var SpeakingMonitor = class extends Resource3 {
1115
+ _mediaStreamTrack;
1116
+ /**
1117
+ * Event that is emitted when the user starts or stops speaking.
1118
+ * It is debounced to prevent rapid state changes.
1119
+ */
1120
+ speakingChanged = new Event2();
1121
+ /**
1122
+ * Real state of the user speaking.
1123
+ */
1124
+ _isSpeaking = false;
1125
+ _lastEventTime = 0;
1126
+ _deferredUpdate;
1085
1127
  constructor(_mediaStreamTrack) {
1086
- super(), this._mediaStreamTrack = _mediaStreamTrack, this.speakingChanged = new Event2(), this._isSpeaking = false, this._lastEventTime = 0;
1128
+ super(), this._mediaStreamTrack = _mediaStreamTrack;
1087
1129
  }
1088
1130
  get isSpeaking() {
1089
1131
  return this._isSpeaking;
@@ -1132,7 +1174,8 @@ var SpeakingMonitor = class extends Resource3 {
1132
1174
 
1133
1175
  // src/calls/media-manager.ts
1134
1176
  import { DeferredTask as DeferredTask3, Event as Event3, sleep as sleep2, synchronized as synchronized2 } from "@dxos/async";
1135
- import { cancelWithContext, Resource as Resource4 } from "@dxos/context";
1177
+ import { Resource as Resource4, cancelWithContext } from "@dxos/context";
1178
+ import { invariant as invariant4 } from "@dxos/invariant";
1136
1179
  import { log as log4 } from "@dxos/log";
1137
1180
  function _ts_decorate2(decorators, target, key, desc) {
1138
1181
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1140,28 +1183,25 @@ function _ts_decorate2(decorators, target, key, desc) {
1140
1183
  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;
1141
1184
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1142
1185
  }
1143
- var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/media-manager.ts";
1186
+ var __dxlog_file5 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/media-manager.ts";
1144
1187
  var VIDEO_WIDTH = 1280;
1145
1188
  var VIDEO_HEIGHT = 720;
1146
1189
  var MAX_WEB_CAM_FRAMERATE = 24;
1147
1190
  var MAX_WEB_CAM_BITRATE = 12e5;
1148
- var RETRY_INTERVAL = 500;
1149
- var USE_INAUDIBLE_AUDIO = false;
1191
+ var RETRY_INTERVAL = 100;
1192
+ var USE_INAUDIBLE_AUDIO = true;
1150
1193
  var MediaManager = class extends Resource4 {
1151
- constructor() {
1152
- super(...arguments);
1153
- this.stateUpdated = new Event3();
1154
- this._state = {
1155
- pulledVideoStreams: {},
1156
- pulledAudioTracks: {}
1157
- };
1158
- this._speakingMonitor = void 0;
1159
- this._trackToReconcile = [];
1160
- this._blackCanvasStreamTrack = void 0;
1161
- this._inaudibleAudioStreamTrack = void 0;
1162
- this._pushTracksTask = void 0;
1163
- this._pullTracksTask = void 0;
1164
- }
1194
+ stateUpdated = new Event3();
1195
+ _state = {
1196
+ pulledVideoStreams: {},
1197
+ pulledAudioTracks: {}
1198
+ };
1199
+ _speakingMonitor = void 0;
1200
+ _trackToReconcile = [];
1201
+ _blackCanvasStreamTrack = void 0;
1202
+ _inaudibleAudioStreamTrack = void 0;
1203
+ _pushTracksTask = void 0;
1204
+ _pullTracksTask = void 0;
1165
1205
  get isSpeaking() {
1166
1206
  return this._speakingMonitor?.isSpeaking;
1167
1207
  }
@@ -1300,8 +1340,8 @@ var MediaManager = class extends Resource4 {
1300
1340
  }
1301
1341
  async _reconcilePulledMedia() {
1302
1342
  log4("reconciling tracks", void 0, {
1303
- F: __dxlog_file4,
1304
- L: 222,
1343
+ F: __dxlog_file5,
1344
+ L: 229,
1305
1345
  S: this,
1306
1346
  C: (f, a) => f(...a)
1307
1347
  });
@@ -1318,12 +1358,12 @@ var MediaManager = class extends Resource4 {
1318
1358
  currentAudioTracks: Object.keys(this._state.pulledAudioTracks),
1319
1359
  currentVideoStreams: Object.keys(this._state.pulledVideoStreams)
1320
1360
  }, {
1321
- F: __dxlog_file4,
1322
- L: 241,
1361
+ F: __dxlog_file5,
1362
+ L: 247,
1323
1363
  S: this,
1324
1364
  C: (f, a) => f(...a)
1325
1365
  });
1326
- await Promise.all(tracksToPull.map((name) => this._pullTrack(name)));
1366
+ const pullResults = await Promise.all(tracksToPull.map((name) => this._pullTrack(name)));
1327
1367
  await Promise.all([
1328
1368
  ...audioTracksToClose,
1329
1369
  ...videoStreamsToClose
@@ -1332,55 +1372,102 @@ var MediaManager = class extends Resource4 {
1332
1372
  currentAudioTracks: Object.keys(this._state.pulledAudioTracks),
1333
1373
  currentVideoStreams: Object.keys(this._state.pulledVideoStreams)
1334
1374
  }, {
1335
- F: __dxlog_file4,
1336
- L: 256,
1375
+ F: __dxlog_file5,
1376
+ L: 262,
1337
1377
  S: this,
1338
1378
  C: (f, a) => f(...a)
1339
1379
  });
1340
1380
  this.stateUpdated.emit(this._state);
1381
+ if (pullResults.some(({ shouldRetry }) => shouldRetry)) {
1382
+ await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
1383
+ log4.info("retrying pull tracks", {
1384
+ tracksToPull
1385
+ }, {
1386
+ F: __dxlog_file5,
1387
+ L: 270,
1388
+ S: this,
1389
+ C: (f, a) => f(...a)
1390
+ });
1391
+ invariant4(this._pullTracksTask, void 0, {
1392
+ F: __dxlog_file5,
1393
+ L: 271,
1394
+ S: this,
1395
+ A: [
1396
+ "this._pullTracksTask",
1397
+ ""
1398
+ ]
1399
+ });
1400
+ this._pullTracksTask.schedule();
1401
+ }
1341
1402
  }
1342
1403
  async _pushTracks() {
1343
1404
  if (!this._state.peer?.isOpen) {
1344
1405
  return;
1345
1406
  }
1346
1407
  let updated = false;
1347
- const [pushedVideoTrack, pushedAudioTrack, pushedScreenshareTrack] = await Promise.all([
1348
- this._pushTrack(this._state.videoTrack, this._state.pushedVideoTrack, [
1408
+ const [pushVideoResult, pushAudioResult, pushScreenshareResult] = await Promise.all([
1409
+ this._maybePushTrack(this._state.videoTrack, this._state.pushedVideoTrack, [
1349
1410
  {
1350
1411
  maxFramerate: MAX_WEB_CAM_FRAMERATE,
1351
1412
  maxBitrate: MAX_WEB_CAM_BITRATE
1352
1413
  }
1353
1414
  ]),
1354
- this._pushTrack(this._state.audioTrack, this._state.pushedAudioTrack, [
1415
+ this._maybePushTrack(this._state.audioTrack, this._state.pushedAudioTrack, [
1355
1416
  {
1356
1417
  networkPriority: "high"
1357
1418
  }
1358
1419
  ]),
1359
- this._pushTrack(this._state.screenshareTrack, this._state.pushedScreenshareTrack)
1420
+ this._maybePushTrack(this._state.screenshareTrack, this._state.pushedScreenshareTrack)
1360
1421
  ]);
1361
- if (pushedVideoTrack !== this._state.pushedVideoTrack) {
1362
- this._state.pushedVideoTrack = pushedVideoTrack;
1422
+ if (pushVideoResult.track !== this._state.pushedVideoTrack) {
1423
+ this._state.pushedVideoTrack = pushVideoResult.track;
1363
1424
  updated = true;
1364
1425
  }
1365
- if (pushedAudioTrack !== this._state.pushedAudioTrack) {
1366
- this._state.pushedAudioTrack = pushedAudioTrack;
1426
+ if (pushAudioResult.track !== this._state.pushedAudioTrack) {
1427
+ this._state.pushedAudioTrack = pushAudioResult.track;
1367
1428
  updated = true;
1368
1429
  }
1369
- if (pushedScreenshareTrack !== this._state.pushedScreenshareTrack) {
1370
- this._state.pushedScreenshareTrack = pushedScreenshareTrack;
1430
+ if (pushScreenshareResult.track !== this._state.pushedScreenshareTrack) {
1431
+ this._state.pushedScreenshareTrack = pushScreenshareResult.track;
1371
1432
  updated = true;
1372
1433
  }
1373
- if (!updated) {
1374
- return;
1434
+ const shouldRetry = pushVideoResult.shouldRetry || pushAudioResult.shouldRetry || pushScreenshareResult.shouldRetry;
1435
+ if (updated) {
1436
+ this.stateUpdated.emit(this._state);
1437
+ }
1438
+ if (shouldRetry) {
1439
+ await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
1440
+ log4.info("retrying push tracks", {
1441
+ pushVideoResult,
1442
+ pushAudioResult,
1443
+ pushScreenshareResult
1444
+ }, {
1445
+ F: __dxlog_file5,
1446
+ L: 310,
1447
+ S: this,
1448
+ C: (f, a) => f(...a)
1449
+ });
1450
+ invariant4(this._pushTracksTask, void 0, {
1451
+ F: __dxlog_file5,
1452
+ L: 311,
1453
+ S: this,
1454
+ A: [
1455
+ "this._pushTracksTask",
1456
+ ""
1457
+ ]
1458
+ });
1459
+ this._pushTracksTask.schedule();
1375
1460
  }
1376
- this.stateUpdated.emit(this._state);
1377
1461
  }
1378
1462
  async _pullTrack(name) {
1379
1463
  const ctx = this._ctx.derive();
1380
1464
  try {
1381
1465
  const trackData = TrackNameCodec.decode(name);
1382
1466
  const track = await this._state.peer.pullTrack({
1383
- trackData,
1467
+ trackData: {
1468
+ ...trackData,
1469
+ mid: void 0
1470
+ },
1384
1471
  ctx
1385
1472
  });
1386
1473
  if (track?.readyState === "ended") {
@@ -1393,7 +1480,9 @@ var MediaManager = class extends Resource4 {
1393
1480
  ctx
1394
1481
  };
1395
1482
  ctx.onDispose(() => delete this._state.pulledAudioTracks[name]);
1396
- break;
1483
+ return {
1484
+ shouldRetry: false
1485
+ };
1397
1486
  }
1398
1487
  case "video": {
1399
1488
  const mediaStream = new MediaStream();
@@ -1407,43 +1496,62 @@ var MediaManager = class extends Resource4 {
1407
1496
  track.stop();
1408
1497
  delete this._state.pulledVideoStreams[name];
1409
1498
  });
1410
- break;
1499
+ return {
1500
+ shouldRetry: false
1501
+ };
1411
1502
  }
1412
1503
  default:
1413
1504
  throw new Error(`Invalid track kind: ${track?.kind}`);
1414
1505
  }
1415
1506
  } catch (err) {
1416
- log4.verbose("failed to pull track", {
1507
+ log4.info("failed to pull track", {
1417
1508
  err,
1418
1509
  name
1419
1510
  }, {
1420
- F: __dxlog_file4,
1421
- L: 326,
1511
+ F: __dxlog_file5,
1512
+ L: 347,
1422
1513
  S: this,
1423
1514
  C: (f, a) => f(...a)
1424
1515
  });
1425
1516
  void ctx.dispose();
1426
- await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
1427
- log4.verbose("retrying pull track", {
1428
- name
1517
+ return {
1518
+ shouldRetry: true
1519
+ };
1520
+ }
1521
+ }
1522
+ async _maybePushTrack(track, previousTrack, encodings) {
1523
+ if (!track && !previousTrack) {
1524
+ return {
1525
+ track: void 0
1526
+ };
1527
+ }
1528
+ const ctx = this._ctx.derive();
1529
+ try {
1530
+ return {
1531
+ track: await this._state.peer.pushTrack({
1532
+ ctx,
1533
+ track: track ?? null,
1534
+ previousTrack,
1535
+ encodings
1536
+ })
1537
+ };
1538
+ } catch (err) {
1539
+ log4.info("failed to push track", {
1540
+ err,
1541
+ track,
1542
+ previousTrack,
1543
+ encodings
1429
1544
  }, {
1430
- F: __dxlog_file4,
1431
- L: 329,
1545
+ F: __dxlog_file5,
1546
+ L: 373,
1432
1547
  S: this,
1433
1548
  C: (f, a) => f(...a)
1434
1549
  });
1435
- this._pullTracksTask.schedule();
1436
- }
1437
- }
1438
- async _pushTrack(track, previousTrack, encodings) {
1439
- if (!track && !previousTrack) {
1440
- return;
1550
+ void ctx.dispose();
1551
+ return {
1552
+ shouldRetry: true
1553
+ };
1441
1554
  }
1442
- return this._state.peer.pushTrack({
1443
- track: track ?? null,
1444
- previousTrack,
1445
- encodings
1446
- });
1447
1555
  }
1448
1556
  };
1449
1557
  _ts_decorate2([
@@ -1454,11 +1562,10 @@ _ts_decorate2([
1454
1562
  ], MediaManager.prototype, "leave", null);
1455
1563
 
1456
1564
  // src/calls/call-manager.ts
1457
- import { computed } from "@preact/signals-core";
1565
+ import { Atom } from "@effect-atom/atom-react";
1458
1566
  import { Event as Event4, synchronized as synchronized3 } from "@dxos/async";
1459
1567
  import { Resource as Resource5 } from "@dxos/context";
1460
- import { invariant as invariant3 } from "@dxos/invariant";
1461
- import { live } from "@dxos/live-object";
1568
+ import { invariant as invariant5 } from "@dxos/invariant";
1462
1569
  import { isNonNullable as isNonNullable2 } from "@dxos/util";
1463
1570
  function _ts_decorate3(decorators, target, key, desc) {
1464
1571
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1466,55 +1573,92 @@ function _ts_decorate3(decorators, target, key, desc) {
1466
1573
  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;
1467
1574
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1468
1575
  }
1469
- var __dxlog_file5 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-manager.ts";
1576
+ var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-manager.ts";
1470
1577
  var CallManager = class extends Resource5 {
1471
- /** @reactive */
1472
- get roomId() {
1473
- return this._state.call.roomId;
1474
- }
1475
- /** @reactive */
1476
- get raisedHand() {
1477
- return this._raisedHandSignal.value;
1478
- }
1479
- /** @reactive */
1480
- get speaking() {
1481
- return this._speakingSignal.value;
1482
- }
1483
- /** @reactive */
1484
- get joined() {
1485
- return this._joinedSignal.value;
1486
- }
1487
- /** @reactive */
1488
- get self() {
1489
- return this._state.call.self ?? {};
1490
- }
1491
- /** @reactive */
1492
- get tracks() {
1493
- return this._state.call.tracks ?? {};
1494
- }
1495
- /** @reactive */
1496
- get users() {
1497
- return this._state.call.users ?? [];
1498
- }
1499
- /** @reactive */
1500
- get media() {
1501
- return this._state.media;
1502
- }
1503
- /** @reactive */
1504
- get audioTracksToPlay() {
1505
- return (this._state.call.users ?? []).map((user) => user.tracks?.audioEnabled ? user.tracks?.audio : void 0).filter(isNonNullable2).map((track) => this._state.media.pulledAudioTracks[track]?.track).filter(isNonNullable2);
1506
- }
1507
- /** @reactive */
1508
- get state() {
1509
- return this._state;
1510
- }
1511
- /** @reactive */
1512
- getVideoStream(name) {
1513
- return name ? this._state.media.pulledVideoStreams[name]?.stream : void 0;
1514
- }
1515
- /** @reactive */
1516
- getActivity(key) {
1517
- return this._state.call.activities?.[key];
1578
+ _client;
1579
+ _registry;
1580
+ callStateUpdated = new Event4();
1581
+ // TODO(wittjosiah): Consolidate isSpeaking into the MediaState type.
1582
+ mediaStateUpdated = new Event4();
1583
+ left = new Event4();
1584
+ /**
1585
+ * Atom-based state. Updated via `_updateState()`.
1586
+ * CAUTION: Do not change directly.
1587
+ */
1588
+ _stateAtom = Atom.make({
1589
+ call: {},
1590
+ media: {
1591
+ pulledAudioTracks: {},
1592
+ pulledVideoStreams: {}
1593
+ }
1594
+ });
1595
+ // Derived atoms for reactive subscriptions.
1596
+ _roomIdAtom = Atom.make((get) => get(this._stateAtom).call.roomId);
1597
+ _raisedHandAtom = Atom.make((get) => get(this._stateAtom).call.raisedHand ?? false);
1598
+ _speakingAtom = Atom.make((get) => get(this._stateAtom).call.speaking ?? false);
1599
+ _joinedAtom = Atom.make((get) => get(this._stateAtom).call.joined ?? false);
1600
+ _selfAtom = Atom.make((get) => get(this._stateAtom).call.self ?? {});
1601
+ _tracksAtom = Atom.make((get) => get(this._stateAtom).call.tracks ?? {});
1602
+ _usersAtom = Atom.make((get) => get(this._stateAtom).call.users ?? []);
1603
+ _mediaAtom = Atom.make((get) => get(this._stateAtom).media);
1604
+ _audioTracksToPlayAtom = Atom.make((get) => {
1605
+ const state = get(this._stateAtom);
1606
+ return (state.call.users ?? []).map((user) => user.tracks?.audioEnabled ? user.tracks?.audio : void 0).filter(isNonNullable2).map((track) => state.media.pulledAudioTracks[track]?.track).filter(isNonNullable2);
1607
+ });
1608
+ _videoStreamAtomFamily = Atom.family((name) => Atom.make((get) => get(this._stateAtom).media.pulledVideoStreams[name]?.stream));
1609
+ _activityAtomFamily = Atom.family((key) => Atom.make((get) => get(this._stateAtom).call.activities?.[key]));
1610
+ _swarmSynchronizer;
1611
+ _mediaManager;
1612
+ //
1613
+ // Derived atoms for reactive UI subscriptions.
1614
+ //
1615
+ /** Derived atom for roomId. */
1616
+ get roomIdAtom() {
1617
+ return this._roomIdAtom;
1618
+ }
1619
+ /** Derived atom for raisedHand. */
1620
+ get raisedHandAtom() {
1621
+ return this._raisedHandAtom;
1622
+ }
1623
+ /** Derived atom for speaking. */
1624
+ get speakingAtom() {
1625
+ return this._speakingAtom;
1626
+ }
1627
+ /** Derived atom for joined. */
1628
+ get joinedAtom() {
1629
+ return this._joinedAtom;
1630
+ }
1631
+ /** Derived atom for self. */
1632
+ get selfAtom() {
1633
+ return this._selfAtom;
1634
+ }
1635
+ /** Derived atom for tracks. */
1636
+ get tracksAtom() {
1637
+ return this._tracksAtom;
1638
+ }
1639
+ /** Derived atom for users. */
1640
+ get usersAtom() {
1641
+ return this._usersAtom;
1642
+ }
1643
+ /** Derived atom for media. */
1644
+ get mediaAtom() {
1645
+ return this._mediaAtom;
1646
+ }
1647
+ /** Derived atom for audioTracksToPlay. */
1648
+ get audioTracksToPlayAtom() {
1649
+ return this._audioTracksToPlayAtom;
1650
+ }
1651
+ /** Returns the full state atom for reactive subscriptions. */
1652
+ get stateAtom() {
1653
+ return this._stateAtom;
1654
+ }
1655
+ /** Returns a derived atom for a video stream by name. */
1656
+ videoStreamAtom(name) {
1657
+ return this._videoStreamAtomFamily(name);
1658
+ }
1659
+ /** Returns a derived atom for an activity by key. */
1660
+ activityAtom(key) {
1661
+ return this._activityAtomFamily(key);
1518
1662
  }
1519
1663
  setRoomId(roomId) {
1520
1664
  this._swarmSynchronizer._setRoomId(roomId);
@@ -1547,19 +1691,13 @@ var CallManager = class extends Resource5 {
1547
1691
  return this._mediaManager.turnScreenshareOff();
1548
1692
  }
1549
1693
  // TODO(burdon): Can this be mocked?
1550
- constructor(_client) {
1551
- super(), this._client = _client, this.callStateUpdated = new Event4(), this.mediaStateUpdated = new Event4(), this.left = new Event4(), this._state = live({
1552
- call: {},
1553
- media: {
1554
- pulledAudioTracks: {},
1555
- pulledVideoStreams: {}
1556
- }
1557
- }), this._raisedHandSignal = computed(() => this._state.call.raisedHand ?? false), this._speakingSignal = computed(() => this._state.call.speaking ?? false), this._joinedSignal = computed(() => this._state.call.joined ?? false);
1694
+ constructor(_client, _registry) {
1695
+ super(), this._client = _client, this._registry = _registry;
1558
1696
  this._client.config.getOrThrow("runtime.services.edge.url");
1559
1697
  const networkService = this._client.services.services.NetworkService;
1560
- invariant3(networkService, "network service not found", {
1561
- F: __dxlog_file5,
1562
- L: 159,
1698
+ invariant5(networkService, "network service not found", {
1699
+ F: __dxlog_file6,
1700
+ L: 180,
1563
1701
  S: this,
1564
1702
  A: [
1565
1703
  "networkService",
@@ -1608,10 +1746,11 @@ var CallManager = class extends Resource5 {
1608
1746
  this._swarmSynchronizer.setJoined(false);
1609
1747
  await this._swarmSynchronizer.leave();
1610
1748
  await this._mediaManager.leave();
1611
- this.roomId && this.left.emit(this.roomId);
1749
+ const roomId = this._registry.get(this._roomIdAtom);
1750
+ roomId && this.left.emit(roomId);
1612
1751
  }
1613
1752
  _onCallStateUpdated(state) {
1614
- const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self?.id)?.flatMap((user) => [
1753
+ const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self.id)?.flatMap((user) => [
1615
1754
  user.tracks?.video,
1616
1755
  user.tracks?.audio,
1617
1756
  user.tracks?.screenshare
@@ -1641,8 +1780,10 @@ var CallManager = class extends Resource5 {
1641
1780
  * Only this method is allowed to change state.
1642
1781
  */
1643
1782
  _updateState() {
1644
- this._state.call = this._swarmSynchronizer._getState();
1645
- this._state.media = this._mediaManager._getState();
1783
+ this._registry.set(this._stateAtom, {
1784
+ call: this._swarmSynchronizer._getState(),
1785
+ media: this._mediaManager._getState()
1786
+ });
1646
1787
  }
1647
1788
  };
1648
1789
  _ts_decorate3([
@@ -1666,4 +1807,4 @@ export {
1666
1807
  MediaManager,
1667
1808
  CallManager
1668
1809
  };
1669
- //# sourceMappingURL=chunk-ZE7KWN36.mjs.map
1810
+ //# sourceMappingURL=chunk-ERK254BS.mjs.map