@dxos/plugin-thread 0.8.4-main.28f8d3d → 0.8.4-main.406dc2a

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 (246) hide show
  1. package/dist/lib/browser/ChannelContainer-BGDGZHV4.mjs +16 -0
  2. package/dist/lib/browser/ChatContainer-75KJZ4XR.mjs +15 -0
  3. package/dist/lib/browser/{app-graph-builder-AF3M7UWN.mjs → app-graph-builder-ODKIAXR7.mjs} +17 -17
  4. package/dist/lib/browser/app-graph-builder-ODKIAXR7.mjs.map +7 -0
  5. package/dist/lib/browser/{call-manager-XRRCAVLI.mjs → call-manager-BCKLI4QD.mjs} +7 -7
  6. package/dist/lib/browser/{call-manager-XRRCAVLI.mjs.map → call-manager-BCKLI4QD.mjs.map} +1 -1
  7. package/dist/lib/browser/chunk-2MUYQOQE.mjs +23 -0
  8. package/dist/lib/browser/{chunk-2CWJBXBH.mjs.map → chunk-2MUYQOQE.mjs.map} +3 -3
  9. package/dist/lib/browser/chunk-B7YQ7QR2.mjs +376 -0
  10. package/dist/lib/browser/chunk-B7YQ7QR2.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-ZJ7QBXK6.mjs → chunk-CMCVHULC.mjs} +17 -15
  12. package/dist/lib/browser/chunk-CMCVHULC.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-GERVMFQW.mjs → chunk-CP7E2HRE.mjs} +2 -2
  14. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-X5PIP5YR.mjs → chunk-HDEQRBOC.mjs} +37 -5
  16. package/dist/lib/{node-esm/chunk-SED3O2XO.mjs.map → browser/chunk-HDEQRBOC.mjs.map} +4 -4
  17. package/dist/lib/browser/chunk-L326LSNS.mjs +18 -0
  18. package/dist/lib/browser/chunk-L326LSNS.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-EV4JWI7L.mjs → chunk-T4KJ5JR4.mjs} +5 -7
  20. package/dist/lib/browser/chunk-T4KJ5JR4.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-VJMKS4CZ.mjs +619 -0
  22. package/dist/lib/browser/chunk-VJMKS4CZ.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-DW7JD64V.mjs → chunk-VTYX3SIM.mjs} +26 -16
  24. package/dist/lib/browser/chunk-VTYX3SIM.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-JGKMMI65.mjs → chunk-XYUJXHYV.mjs} +54 -4
  26. package/dist/lib/browser/chunk-XYUJXHYV.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-TUFWPOVS.mjs → chunk-ZCEU5K23.mjs} +460 -268
  28. package/dist/lib/browser/chunk-ZCEU5K23.mjs.map +7 -0
  29. package/dist/lib/browser/index.mjs +22 -13
  30. package/dist/lib/browser/index.mjs.map +3 -3
  31. package/dist/lib/browser/{intent-resolver-DCY4P4OX.mjs → intent-resolver-VOQD3TQ2.mjs} +73 -15
  32. package/dist/lib/browser/intent-resolver-VOQD3TQ2.mjs.map +7 -0
  33. package/dist/lib/browser/{markdown-WZSXCEZJ.mjs → markdown-R6MGRIA6.mjs} +6 -6
  34. package/dist/lib/browser/{markdown-WZSXCEZJ.mjs.map → markdown-R6MGRIA6.mjs.map} +1 -1
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/react-root-UMSBTN6H.mjs +28 -0
  37. package/dist/lib/browser/react-root-UMSBTN6H.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-PYAMIADB.mjs → react-surface-SXMQEWKE.mjs} +22 -22
  39. package/dist/lib/browser/react-surface-SXMQEWKE.mjs.map +7 -0
  40. package/dist/lib/browser/{settings-AC6YSASL.mjs → settings-TCNF54PN.mjs} +5 -5
  41. package/dist/lib/browser/{settings-AC6YSASL.mjs.map → settings-TCNF54PN.mjs.map} +1 -1
  42. package/dist/lib/browser/{state-2T4KDWBX.mjs → state-ZQ4IPOJT.mjs} +5 -5
  43. package/dist/lib/browser/{state-2T4KDWBX.mjs.map → state-ZQ4IPOJT.mjs.map} +1 -1
  44. package/dist/lib/browser/toolkit-JF4B4QIO.mjs +84 -0
  45. package/dist/lib/browser/toolkit-JF4B4QIO.mjs.map +7 -0
  46. package/dist/lib/browser/types/index.mjs +2 -2
  47. package/dist/lib/node-esm/ChannelContainer-OXC6BTU7.mjs +17 -0
  48. package/dist/lib/node-esm/{ChatContainer-2CT4PJ7I.mjs → ChatContainer-SH6LTFQL.mjs} +6 -6
  49. package/dist/lib/node-esm/{app-graph-builder-OLSJVCWY.mjs → app-graph-builder-DMPT3MY6.mjs} +17 -17
  50. package/dist/lib/node-esm/app-graph-builder-DMPT3MY6.mjs.map +7 -0
  51. package/dist/lib/node-esm/{call-manager-EI7FXRAU.mjs → call-manager-Q7RY2YP4.mjs} +7 -7
  52. package/dist/lib/node-esm/{call-manager-EI7FXRAU.mjs.map → call-manager-Q7RY2YP4.mjs.map} +1 -1
  53. package/dist/lib/node-esm/{chunk-YIDU3DXK.mjs → chunk-2KZ4ODHU.mjs} +17 -15
  54. package/dist/lib/node-esm/chunk-2KZ4ODHU.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-SED3O2XO.mjs → chunk-2MMJF7DW.mjs} +37 -5
  56. package/dist/lib/node-esm/chunk-2MMJF7DW.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-QBHKLWGR.mjs → chunk-2V3WSLUZ.mjs} +54 -4
  58. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-57XR3LEF.mjs → chunk-ABUFOZVX.mjs} +2 -2
  60. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-XVKWHTH4.mjs → chunk-BAMZXJS4.mjs} +26 -16
  62. package/dist/lib/node-esm/chunk-BAMZXJS4.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-BTGKI5IK.mjs +377 -0
  64. package/dist/lib/node-esm/chunk-BTGKI5IK.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-GZ4WL2IS.mjs +25 -0
  66. package/dist/lib/node-esm/{chunk-6CRHHOST.mjs.map → chunk-GZ4WL2IS.mjs.map} +3 -3
  67. package/dist/lib/node-esm/chunk-LCHTNRK7.mjs +19 -0
  68. package/dist/lib/node-esm/chunk-LCHTNRK7.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-NHSIAEDW.mjs +620 -0
  70. package/dist/lib/node-esm/chunk-NHSIAEDW.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-GRLRWTRU.mjs → chunk-OBVAURUU.mjs} +5 -7
  72. package/dist/lib/node-esm/chunk-OBVAURUU.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-4TME3BR4.mjs → chunk-TIPIOH2J.mjs} +460 -268
  74. package/dist/lib/node-esm/chunk-TIPIOH2J.mjs.map +7 -0
  75. package/dist/lib/node-esm/index.mjs +22 -13
  76. package/dist/lib/node-esm/index.mjs.map +3 -3
  77. package/dist/lib/node-esm/{intent-resolver-QGTPU6QB.mjs → intent-resolver-AKVH66PH.mjs} +73 -15
  78. package/dist/lib/node-esm/intent-resolver-AKVH66PH.mjs.map +7 -0
  79. package/dist/lib/node-esm/{markdown-3MZXUGUA.mjs → markdown-MYGTDXT6.mjs} +6 -6
  80. package/dist/lib/node-esm/{markdown-3MZXUGUA.mjs.map → markdown-MYGTDXT6.mjs.map} +1 -1
  81. package/dist/lib/node-esm/meta.json +1 -1
  82. package/dist/lib/node-esm/react-root-W6AVTL5M.mjs +29 -0
  83. package/dist/lib/node-esm/react-root-W6AVTL5M.mjs.map +7 -0
  84. package/dist/lib/node-esm/{react-surface-UJFCSFNO.mjs → react-surface-NLSZJGMO.mjs} +22 -22
  85. package/dist/lib/node-esm/react-surface-NLSZJGMO.mjs.map +7 -0
  86. package/dist/lib/node-esm/{settings-N52O7MLS.mjs → settings-ZQHGVFBY.mjs} +5 -5
  87. package/dist/lib/node-esm/{settings-N52O7MLS.mjs.map → settings-ZQHGVFBY.mjs.map} +1 -1
  88. package/dist/lib/node-esm/{state-62TQKQVB.mjs → state-FSLLJ5TZ.mjs} +5 -5
  89. package/dist/lib/node-esm/{state-62TQKQVB.mjs.map → state-FSLLJ5TZ.mjs.map} +1 -1
  90. package/dist/lib/node-esm/toolkit-DHPKJITO.mjs +85 -0
  91. package/dist/lib/node-esm/toolkit-DHPKJITO.mjs.map +7 -0
  92. package/dist/lib/node-esm/types/index.mjs +2 -2
  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/media-manager.d.ts +1 -1
  96. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  97. package/dist/types/src/calls/types.d.ts.map +1 -1
  98. package/dist/types/src/calls/util/calls-service.d.ts +3 -1
  99. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  100. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  101. package/dist/types/src/calls-service.stories.d.ts +10 -9
  102. package/dist/types/src/calls-service.stories.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  104. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/call-manager.d.ts +1 -1
  106. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/index.d.ts +11 -10
  108. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  110. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/markdown.d.ts +1 -1
  112. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  113. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  114. package/dist/types/src/capabilities/settings.d.ts +1 -1
  115. package/dist/types/src/capabilities/state.d.ts +2 -2
  116. package/dist/types/src/capabilities/toolkit.d.ts +6 -0
  117. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  118. package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
  119. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
  120. package/dist/types/src/components/ChannelContainer.stories.d.ts +89 -5
  121. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  122. package/dist/types/src/components/Chat.stories.d.ts +91 -5
  123. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  125. package/dist/types/src/components/Comments.stories.d.ts +156 -4
  126. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  127. package/dist/types/src/components/CommentsThreadContainer.d.ts +2 -2
  128. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
  129. package/dist/types/src/components/Media/VideoObject.d.ts +2 -2
  130. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
  131. package/dist/types/src/components/Media/VideoObject.stories.d.ts +18 -4
  132. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  133. package/dist/types/src/components/MessageContainer.d.ts +4 -1
  134. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  135. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  136. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +155 -3
  137. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +157 -4
  139. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  140. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  141. package/dist/types/src/components/ThreadSettings.d.ts +1 -1
  142. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  143. package/dist/types/src/components/command-extension.d.ts.map +1 -1
  144. package/dist/types/src/components/testing.d.ts +1 -0
  145. package/dist/types/src/components/testing.d.ts.map +1 -1
  146. package/dist/types/src/hooks/index.d.ts +1 -0
  147. package/dist/types/src/hooks/index.d.ts.map +1 -1
  148. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
  149. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
  150. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +1 -1
  151. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -1
  152. package/dist/types/src/meta.d.ts +1 -2
  153. package/dist/types/src/meta.d.ts.map +1 -1
  154. package/dist/types/src/translations.d.ts +3 -1
  155. package/dist/types/src/translations.d.ts.map +1 -1
  156. package/dist/types/src/types/schema.d.ts +126 -111
  157. package/dist/types/src/types/schema.d.ts.map +1 -1
  158. package/dist/types/src/types/types.d.ts +259 -174
  159. package/dist/types/src/types/types.d.ts.map +1 -1
  160. package/dist/types/tsconfig.tsbuildinfo +1 -1
  161. package/package.json +60 -58
  162. package/src/ThreadPlugin.tsx +128 -122
  163. package/src/calls/call-manager.ts +1 -1
  164. package/src/calls/media-manager.ts +58 -32
  165. package/src/calls/types.ts +7 -3
  166. package/src/calls/util/calls-service.ts +61 -11
  167. package/src/calls/util/stub-media-streams.ts +60 -3
  168. package/src/calls-service.stories.tsx +76 -63
  169. package/src/capabilities/app-graph-builder.ts +13 -10
  170. package/src/capabilities/capabilities.ts +5 -5
  171. package/src/capabilities/index.ts +1 -0
  172. package/src/capabilities/intent-resolver.ts +39 -6
  173. package/src/capabilities/react-root.tsx +2 -2
  174. package/src/capabilities/react-surface.tsx +9 -9
  175. package/src/capabilities/toolkit.ts +82 -0
  176. package/src/components/Call/Toolbar.tsx +4 -4
  177. package/src/components/CallDebugPanel.tsx +108 -49
  178. package/src/components/ChannelContainer.stories.tsx +9 -9
  179. package/src/components/ChannelContainer.tsx +1 -1
  180. package/src/components/Chat.stories.tsx +31 -29
  181. package/src/components/ChatContainer.tsx +4 -1
  182. package/src/components/Comments.stories.tsx +33 -35
  183. package/src/components/CommentsThreadContainer.tsx +8 -7
  184. package/src/components/Media/VideoObject.stories.tsx +35 -28
  185. package/src/components/MessageContainer.tsx +40 -7
  186. package/src/components/Participant/Participant.tsx +13 -7
  187. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +5 -6
  188. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +41 -40
  189. package/src/components/ThreadComplementary.tsx +36 -6
  190. package/src/components/ThreadSettings.tsx +6 -7
  191. package/src/components/command-extension.ts +4 -1
  192. package/src/components/testing.ts +22 -0
  193. package/src/hooks/index.ts +1 -0
  194. package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
  195. package/src/hooks/useVideoStreamTrack.tsx +6 -3
  196. package/src/meta.ts +3 -4
  197. package/src/testing/stories.ts +1 -1
  198. package/src/translations.ts +3 -1
  199. package/src/types/schema.ts +1 -1
  200. package/src/types/types.ts +21 -13
  201. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  202. package/src/util.ts +1 -1
  203. package/dist/lib/browser/ChannelContainer-O2SFQJU7.mjs +0 -16
  204. package/dist/lib/browser/ChatContainer-PVT3DUZJ.mjs +0 -15
  205. package/dist/lib/browser/app-graph-builder-AF3M7UWN.mjs.map +0 -7
  206. package/dist/lib/browser/chunk-2CWJBXBH.mjs +0 -21
  207. package/dist/lib/browser/chunk-4APCDRSH.mjs +0 -18
  208. package/dist/lib/browser/chunk-4APCDRSH.mjs.map +0 -7
  209. package/dist/lib/browser/chunk-DW7JD64V.mjs.map +0 -7
  210. package/dist/lib/browser/chunk-EV4JWI7L.mjs.map +0 -7
  211. package/dist/lib/browser/chunk-FY4ZRD5X.mjs +0 -367
  212. package/dist/lib/browser/chunk-FY4ZRD5X.mjs.map +0 -7
  213. package/dist/lib/browser/chunk-GERVMFQW.mjs.map +0 -7
  214. package/dist/lib/browser/chunk-J3JO5NWO.mjs +0 -477
  215. package/dist/lib/browser/chunk-J3JO5NWO.mjs.map +0 -7
  216. package/dist/lib/browser/chunk-JGKMMI65.mjs.map +0 -7
  217. package/dist/lib/browser/chunk-TUFWPOVS.mjs.map +0 -7
  218. package/dist/lib/browser/chunk-X5PIP5YR.mjs.map +0 -7
  219. package/dist/lib/browser/chunk-ZJ7QBXK6.mjs.map +0 -7
  220. package/dist/lib/browser/intent-resolver-DCY4P4OX.mjs.map +0 -7
  221. package/dist/lib/browser/react-root-QXPALOUQ.mjs +0 -28
  222. package/dist/lib/browser/react-root-QXPALOUQ.mjs.map +0 -7
  223. package/dist/lib/browser/react-surface-PYAMIADB.mjs.map +0 -7
  224. package/dist/lib/node-esm/ChannelContainer-B2ZGAE4P.mjs +0 -17
  225. package/dist/lib/node-esm/app-graph-builder-OLSJVCWY.mjs.map +0 -7
  226. package/dist/lib/node-esm/chunk-4TME3BR4.mjs.map +0 -7
  227. package/dist/lib/node-esm/chunk-57XR3LEF.mjs.map +0 -7
  228. package/dist/lib/node-esm/chunk-6CRHHOST.mjs +0 -23
  229. package/dist/lib/node-esm/chunk-BF4UKS55.mjs +0 -368
  230. package/dist/lib/node-esm/chunk-BF4UKS55.mjs.map +0 -7
  231. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs.map +0 -7
  232. package/dist/lib/node-esm/chunk-PYTVBN5J.mjs +0 -19
  233. package/dist/lib/node-esm/chunk-PYTVBN5J.mjs.map +0 -7
  234. package/dist/lib/node-esm/chunk-QBHKLWGR.mjs.map +0 -7
  235. package/dist/lib/node-esm/chunk-VNG6M2IY.mjs +0 -478
  236. package/dist/lib/node-esm/chunk-VNG6M2IY.mjs.map +0 -7
  237. package/dist/lib/node-esm/chunk-XVKWHTH4.mjs.map +0 -7
  238. package/dist/lib/node-esm/chunk-YIDU3DXK.mjs.map +0 -7
  239. package/dist/lib/node-esm/intent-resolver-QGTPU6QB.mjs.map +0 -7
  240. package/dist/lib/node-esm/react-root-7ZFJYVUZ.mjs +0 -29
  241. package/dist/lib/node-esm/react-root-7ZFJYVUZ.mjs.map +0 -7
  242. package/dist/lib/node-esm/react-surface-UJFCSFNO.mjs.map +0 -7
  243. /package/dist/lib/browser/{ChannelContainer-O2SFQJU7.mjs.map → ChannelContainer-BGDGZHV4.mjs.map} +0 -0
  244. /package/dist/lib/browser/{ChatContainer-PVT3DUZJ.mjs.map → ChatContainer-75KJZ4XR.mjs.map} +0 -0
  245. /package/dist/lib/node-esm/{ChannelContainer-B2ZGAE4P.mjs.map → ChannelContainer-OXC6BTU7.mjs.map} +0 -0
  246. /package/dist/lib/node-esm/{ChatContainer-2CT4PJ7I.mjs.map → ChatContainer-SH6LTFQL.mjs.map} +0 -0
@@ -1,11 +1,13 @@
1
1
  import {
2
2
  createBlackCanvasStreamTrack,
3
3
  createInaudibleAudioStreamTrack
4
- } from "./chunk-JGKMMI65.mjs";
4
+ } from "./chunk-XYUJXHYV.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,38 +64,35 @@ 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";
41
71
  import { ActivitySchema } from "@dxos/protocols/buf/dxos/edge/calls_pb";
42
72
  import { ConnectionState } from "@dxos/protocols/proto/dxos/edge/messenger";
43
73
  import { isNonNullable } from "@dxos/util";
74
+ function _define_property(obj, key, value) {
75
+ if (key in obj) {
76
+ Object.defineProperty(obj, key, {
77
+ value,
78
+ enumerable: true,
79
+ configurable: true,
80
+ writable: true
81
+ });
82
+ } else {
83
+ obj[key] = value;
84
+ }
85
+ return obj;
86
+ }
44
87
  function _ts_decorate(decorators, target, key, desc) {
45
88
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
46
89
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
47
90
  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
91
  return c > 3 && r && Object.defineProperty(target, key, r), r;
49
92
  }
50
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-swarm-synchronizer.ts";
93
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-swarm-synchronizer.ts";
51
94
  var DISCONNECTED_ABRUPT_TIMEOUT = 1e4;
52
95
  var CallSwarmSynchronizer = class extends Resource {
53
- stateUpdated = new Event();
54
- _state = {
55
- activities: {}
56
- };
57
- _networkService;
58
- _lastSwarmEvent = void 0;
59
- _reconcileSwarmStateTask = void 0;
60
- _identityKey = void 0;
61
- _deviceKey = void 0;
62
- _displayName = void 0;
63
- _swarmCtx = void 0;
64
- _sendStateTask = void 0;
65
- constructor({ networkService }) {
66
- super();
67
- this._networkService = networkService;
68
- }
69
96
  /**
70
97
  * @internal
71
98
  */
@@ -131,7 +158,7 @@ var CallSwarmSynchronizer = class extends Resource {
131
158
  log.verbose("joined to a different room", {
132
159
  roomId
133
160
  }, {
134
- F: __dxlog_file,
161
+ F: __dxlog_file2,
135
162
  L: 152,
136
163
  S: this,
137
164
  C: (f, a) => f(...a)
@@ -153,8 +180,8 @@ var CallSwarmSynchronizer = class extends Resource {
153
180
  this._reconcileSwarmStateTask = void 0;
154
181
  }
155
182
  async join() {
156
- invariant(this._state.roomId, void 0, {
157
- F: __dxlog_file,
183
+ invariant2(this._state.roomId, void 0, {
184
+ F: __dxlog_file2,
158
185
  L: 176,
159
186
  S: this,
160
187
  A: [
@@ -162,8 +189,8 @@ var CallSwarmSynchronizer = class extends Resource {
162
189
  ""
163
190
  ]
164
191
  });
165
- invariant(!this._swarmCtx, "Already joined", {
166
- F: __dxlog_file,
192
+ invariant2(!this._swarmCtx, "Already joined", {
193
+ F: __dxlog_file2,
167
194
  L: 177,
168
195
  S: this,
169
196
  A: [
@@ -172,7 +199,7 @@ var CallSwarmSynchronizer = class extends Resource {
172
199
  ]
173
200
  });
174
201
  this._swarmCtx = new Context(void 0, {
175
- F: __dxlog_file,
202
+ F: __dxlog_file2,
176
203
  L: 179
177
204
  });
178
205
  const topic = getTopic(this._state.roomId);
@@ -183,7 +210,7 @@ var CallSwarmSynchronizer = class extends Resource {
183
210
  peerKey: this._deviceKey
184
211
  }
185
212
  }, {
186
- F: __dxlog_file,
213
+ F: __dxlog_file2,
187
214
  L: 181,
188
215
  S: this,
189
216
  C: (f, a) => f(...a)
@@ -202,7 +229,7 @@ var CallSwarmSynchronizer = class extends Resource {
202
229
  peerKey: this._deviceKey
203
230
  }
204
231
  }, {
205
- F: __dxlog_file,
232
+ F: __dxlog_file2,
206
233
  L: 188,
207
234
  S: this,
208
235
  C: (f, a) => f(...a)
@@ -214,7 +241,7 @@ var CallSwarmSynchronizer = class extends Resource {
214
241
  peerKey: this._deviceKey
215
242
  }
216
243
  }).catch((err) => log.catch(err, void 0, {
217
- F: __dxlog_file,
244
+ F: __dxlog_file2,
218
245
  L: 194,
219
246
  S: this,
220
247
  C: (f, a) => f(...a)
@@ -282,8 +309,8 @@ var CallSwarmSynchronizer = class extends Resource {
282
309
  }
283
310
  async _reconcileSwarmState() {
284
311
  const swarmEvent = this._lastSwarmEvent;
285
- invariant(swarmEvent, void 0, {
286
- F: __dxlog_file,
312
+ invariant2(swarmEvent, void 0, {
313
+ F: __dxlog_file2,
287
314
  L: 273,
288
315
  S: this,
289
316
  A: [
@@ -303,7 +330,7 @@ var CallSwarmSynchronizer = class extends Resource {
303
330
  error,
304
331
  peer
305
332
  }, {
306
- F: __dxlog_file,
333
+ F: __dxlog_file2,
307
334
  L: 290,
308
335
  S: this,
309
336
  C: (f, a) => f(...a)
@@ -316,7 +343,7 @@ var CallSwarmSynchronizer = class extends Resource {
316
343
  log("reconciling swarm state", {
317
344
  users
318
345
  }, {
319
- F: __dxlog_file,
346
+ F: __dxlog_file2,
320
347
  L: 297,
321
348
  S: this,
322
349
  C: (f, a) => f(...a)
@@ -339,6 +366,12 @@ var CallSwarmSynchronizer = class extends Resource {
339
366
  scheduleTaskInterval(this._ctx, async () => this._reconcileSwarmStateTask.schedule(), Math.min(DISCONNECTED_ABRUPT_TIMEOUT / 2, 1e3));
340
367
  }
341
368
  }
369
+ constructor({ networkService }) {
370
+ super(), _define_property(this, "stateUpdated", new Event()), _define_property(this, "_state", {
371
+ activities: {}
372
+ }), _define_property(this, "_networkService", void 0), _define_property(this, "_lastSwarmEvent", void 0), _define_property(this, "_reconcileSwarmStateTask", void 0), _define_property(this, "_identityKey", void 0), _define_property(this, "_deviceKey", void 0), _define_property(this, "_displayName", void 0), _define_property(this, "_swarmCtx", void 0), _define_property(this, "_sendStateTask", void 0);
373
+ this._networkService = networkService;
374
+ }
342
375
  };
343
376
  _ts_decorate([
344
377
  synchronized
@@ -404,19 +437,26 @@ var monitorAudioLevel = ({ mediaStreamTrack, intervalMs = 1e3 / 10, onMeasure })
404
437
  };
405
438
 
406
439
  // src/calls/util/calls-service.ts
407
- import { PersistentLifecycle } from "@dxos/async";
440
+ import { PersistentLifecycle, Trigger, scheduleTask } from "@dxos/async";
408
441
  import { Resource as Resource2 } from "@dxos/context";
409
- import { invariant as invariant2 } from "@dxos/invariant";
442
+ import { invariant as invariant3 } from "@dxos/invariant";
410
443
  import { log as log2 } from "@dxos/log";
411
444
 
412
445
  // src/calls/util/history-cache.ts
413
- var HistoryCache = class {
414
- _limit;
415
- _messages;
416
- constructor(limit = 100) {
417
- this._limit = limit;
418
- this._messages = [];
446
+ function _define_property2(obj, key, value) {
447
+ if (key in obj) {
448
+ Object.defineProperty(obj, key, {
449
+ value,
450
+ enumerable: true,
451
+ configurable: true,
452
+ writable: true
453
+ });
454
+ } else {
455
+ obj[key] = value;
419
456
  }
457
+ return obj;
458
+ }
459
+ var HistoryCache = class {
420
460
  push(...messages) {
421
461
  if (this._messages.length >= this._limit) {
422
462
  this._messages.shift();
@@ -426,53 +466,98 @@ var HistoryCache = class {
426
466
  get() {
427
467
  return this._messages;
428
468
  }
469
+ constructor(limit = 100) {
470
+ _define_property2(this, "_limit", void 0);
471
+ _define_property2(this, "_messages", void 0);
472
+ this._limit = limit;
473
+ this._messages = [];
474
+ }
429
475
  };
430
476
 
431
477
  // src/calls/util/task-scheduling.ts
478
+ function _check_private_redeclaration(obj, privateCollection) {
479
+ if (privateCollection.has(obj)) {
480
+ throw new TypeError("Cannot initialize the same private elements twice on an object");
481
+ }
482
+ }
483
+ function _class_apply_descriptor_get(receiver, descriptor) {
484
+ if (descriptor.get) {
485
+ return descriptor.get.call(receiver);
486
+ }
487
+ return descriptor.value;
488
+ }
489
+ function _class_apply_descriptor_set(receiver, descriptor, value) {
490
+ if (descriptor.set) {
491
+ descriptor.set.call(receiver, value);
492
+ } else {
493
+ if (!descriptor.writable) {
494
+ throw new TypeError("attempted to set read only private field");
495
+ }
496
+ descriptor.value = value;
497
+ }
498
+ }
499
+ function _class_extract_field_descriptor(receiver, privateMap, action) {
500
+ if (!privateMap.has(receiver)) {
501
+ throw new TypeError("attempted to " + action + " private field on non-instance");
502
+ }
503
+ return privateMap.get(receiver);
504
+ }
505
+ function _class_private_field_get(receiver, privateMap) {
506
+ var descriptor = _class_extract_field_descriptor(receiver, privateMap, "get");
507
+ return _class_apply_descriptor_get(receiver, descriptor);
508
+ }
509
+ function _class_private_field_init(obj, privateMap, value) {
510
+ _check_private_redeclaration(obj, privateMap);
511
+ privateMap.set(obj, value);
512
+ }
513
+ function _class_private_field_set(receiver, privateMap, value) {
514
+ var descriptor = _class_extract_field_descriptor(receiver, privateMap, "set");
515
+ _class_apply_descriptor_set(receiver, descriptor, value);
516
+ return value;
517
+ }
432
518
  var DefaultBatchSizeLimit = 64;
519
+ var _schedulerChain = /* @__PURE__ */ new WeakMap();
433
520
  var FIFOScheduler = class {
434
- #schedulerChain;
435
- constructor() {
436
- this.#schedulerChain = Promise.resolve();
437
- }
438
521
  schedule(task) {
439
522
  return new Promise((resolve, reject) => {
440
- this.#schedulerChain = this.#schedulerChain.then(async () => {
523
+ _class_private_field_set(this, _schedulerChain, _class_private_field_get(this, _schedulerChain).then(async () => {
441
524
  try {
442
525
  resolve(await task());
443
526
  } catch (error) {
444
527
  reject(error);
445
528
  }
446
- });
529
+ }));
530
+ });
531
+ }
532
+ constructor() {
533
+ _class_private_field_init(this, _schedulerChain, {
534
+ writable: true,
535
+ value: void 0
447
536
  });
537
+ _class_private_field_set(this, _schedulerChain, Promise.resolve());
448
538
  }
449
539
  };
540
+ var _currentBatch = /* @__PURE__ */ new WeakMap();
541
+ var _currentBulkResponse = /* @__PURE__ */ new WeakMap();
542
+ var _batchSizeLimit = /* @__PURE__ */ new WeakMap();
450
543
  var BulkRequestDispatcher = class {
451
- #currentBatch;
452
- #currentBulkResponse;
453
- #batchSizeLimit;
454
- constructor(batchSizeLimit = DefaultBatchSizeLimit) {
455
- this.#currentBatch = [];
456
- this.#currentBulkResponse = null;
457
- this.#batchSizeLimit = batchSizeLimit;
458
- }
459
544
  /**
460
545
  * Returns a bulk response promise.
461
546
  * At the event loop iteration end, the accumulated entries will be dispatched as a bulk request.
462
547
  */
463
548
  doBulkRequest(params, bulkRequestFunc) {
464
- if (this.#currentBatch.length >= this.#batchSizeLimit) {
465
- this.#currentBatch = [];
466
- this.#currentBulkResponse = null;
549
+ if (_class_private_field_get(this, _currentBatch).length >= _class_private_field_get(this, _batchSizeLimit)) {
550
+ _class_private_field_set(this, _currentBatch, []);
551
+ _class_private_field_set(this, _currentBulkResponse, null);
467
552
  }
468
- this.#currentBatch.push(params);
469
- if (this.#currentBulkResponse != null) {
470
- return this.#currentBulkResponse;
553
+ _class_private_field_get(this, _currentBatch).push(params);
554
+ if (_class_private_field_get(this, _currentBulkResponse) != null) {
555
+ return _class_private_field_get(this, _currentBulkResponse);
471
556
  }
472
- const batch = this.#currentBatch;
473
- this.#currentBulkResponse = new Promise((resolve, reject) => {
557
+ const batch = _class_private_field_get(this, _currentBatch);
558
+ _class_private_field_set(this, _currentBulkResponse, new Promise((resolve, reject) => {
474
559
  setTimeout(() => {
475
- this.#currentBulkResponse = null;
560
+ _class_private_field_set(this, _currentBulkResponse, null);
476
561
  const batchCopy = batch.splice(0, batch.length);
477
562
  bulkRequestFunc(batchCopy).then((result) => {
478
563
  resolve(result);
@@ -480,29 +565,45 @@ var BulkRequestDispatcher = class {
480
565
  reject(err);
481
566
  });
482
567
  }, 0);
568
+ }));
569
+ return _class_private_field_get(this, _currentBulkResponse);
570
+ }
571
+ constructor(batchSizeLimit = DefaultBatchSizeLimit) {
572
+ _class_private_field_init(this, _currentBatch, {
573
+ writable: true,
574
+ value: void 0
575
+ });
576
+ _class_private_field_init(this, _currentBulkResponse, {
577
+ writable: true,
578
+ value: void 0
483
579
  });
484
- return this.#currentBulkResponse;
580
+ _class_private_field_init(this, _batchSizeLimit, {
581
+ writable: true,
582
+ value: void 0
583
+ });
584
+ _class_private_field_set(this, _currentBatch, []);
585
+ _class_private_field_set(this, _currentBulkResponse, null);
586
+ _class_private_field_set(this, _batchSizeLimit, batchSizeLimit);
485
587
  }
486
588
  };
487
589
 
488
590
  // src/calls/util/calls-service.ts
489
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/calls-service.ts";
591
+ function _define_property3(obj, key, value) {
592
+ if (key in obj) {
593
+ Object.defineProperty(obj, key, {
594
+ value,
595
+ enumerable: true,
596
+ configurable: true,
597
+ writable: true
598
+ });
599
+ } else {
600
+ obj[key] = value;
601
+ }
602
+ return obj;
603
+ }
604
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/calls-service.ts";
490
605
  var NETWORK_TIMEOUT = 5e3;
491
606
  var CallsServicePeer = class extends Resource2 {
492
- history = new HistoryCache(100);
493
- _persistentLifecycle = new PersistentLifecycle({
494
- start: () => this._startSession(),
495
- stop: (session) => this._stopSession(session)
496
- });
497
- _config;
498
- taskScheduler = new FIFOScheduler();
499
- pushTrackDispatcher = new BulkRequestDispatcher(32);
500
- pullTrackDispatcher = new BulkRequestDispatcher(32);
501
- closeTrackDispatcher = new BulkRequestDispatcher(32);
502
- constructor(config) {
503
- super();
504
- this._config = config;
505
- }
506
607
  async _open(ctx) {
507
608
  await this._persistentLifecycle.open(ctx);
508
609
  }
@@ -530,11 +631,11 @@ var CallsServicePeer = class extends Resource2 {
530
631
  });
531
632
  peerConnection.addEventListener("connectionstatechange", () => {
532
633
  if (peerConnection.connectionState === "failed" || peerConnection.connectionState === "closed") {
533
- log2.warn("calls connection failed", {
634
+ log2.info("calls connection failed", {
534
635
  state: peerConnection.connectionState
535
636
  }, {
536
- F: __dxlog_file2,
537
- L: 119,
637
+ F: __dxlog_file3,
638
+ L: 121,
538
639
  S: this,
539
640
  C: (f, a) => f(...a)
540
641
  });
@@ -545,11 +646,11 @@ var CallsServicePeer = class extends Resource2 {
545
646
  peerConnection.addEventListener("iceconnectionstatechange", () => {
546
647
  clearTimeout(iceTimeout);
547
648
  if (peerConnection.iceConnectionState === "failed" || peerConnection.iceConnectionState === "closed") {
548
- log2.warn("calls connection to ICEs failed", {
649
+ log2.info("calls connection to ICEs failed", {
549
650
  state: peerConnection.iceConnectionState
550
651
  }, {
551
- F: __dxlog_file2,
552
- L: 128,
652
+ F: __dxlog_file3,
653
+ L: 130,
553
654
  S: this,
554
655
  C: (f, a) => f(...a)
555
656
  });
@@ -559,19 +660,19 @@ var CallsServicePeer = class extends Resource2 {
559
660
  iceTimeout = window.setTimeout(() => {
560
661
  if (peerConnection.iceConnectionState === "connected") {
561
662
  log2.info("calls iceConnectionState is connected", void 0, {
562
- F: __dxlog_file2,
563
- L: 137,
663
+ F: __dxlog_file3,
664
+ L: 139,
564
665
  S: this,
565
666
  C: (f, a) => f(...a)
566
667
  });
567
668
  return;
568
669
  }
569
- log2.warn("calls iceConnectionState timed out", {
670
+ log2.info("calls iceConnectionState timed out", {
570
671
  state: peerConnection.iceConnectionState,
571
672
  timeoutSeconds
572
673
  }, {
573
- F: __dxlog_file2,
574
- L: 141,
674
+ F: __dxlog_file3,
675
+ L: 143,
575
676
  S: this,
576
677
  C: (f, a) => f(...a)
577
678
  });
@@ -583,8 +684,8 @@ var CallsServicePeer = class extends Resource2 {
583
684
  }
584
685
  async _initiateCallSession() {
585
686
  log2("creating new session", void 0, {
586
- F: __dxlog_file2,
587
- L: 151,
687
+ F: __dxlog_file3,
688
+ L: 153,
588
689
  S: this,
589
690
  C: (f, a) => f(...a)
590
691
  });
@@ -595,6 +696,7 @@ var CallsServicePeer = class extends Resource2 {
595
696
  }
596
697
  async _fetch(relativePath, requestInit) {
597
698
  this.history.push({
699
+ endpoint: relativePath,
598
700
  type: "request",
599
701
  time: (/* @__PURE__ */ new Date()).toISOString(),
600
702
  method: requestInit?.method ?? "GET",
@@ -609,8 +711,8 @@ var CallsServicePeer = class extends Resource2 {
609
711
  status: response.status,
610
712
  text: await response.text()
611
713
  }, {
612
- F: __dxlog_file2,
613
- L: 166,
714
+ F: __dxlog_file3,
715
+ L: 169,
614
716
  S: this,
615
717
  C: (f, a) => f(...a)
616
718
  });
@@ -619,6 +721,7 @@ var CallsServicePeer = class extends Resource2 {
619
721
  try {
620
722
  const data = await response.clone().json();
621
723
  this.history.push({
724
+ endpoint: relativePath,
622
725
  type: "response",
623
726
  time: (/* @__PURE__ */ new Date()).toISOString(),
624
727
  status: response.status,
@@ -631,6 +734,7 @@ var CallsServicePeer = class extends Resource2 {
631
734
  } catch (error) {
632
735
  const text = await response.text();
633
736
  this.history.push({
737
+ endpoint: relativePath,
634
738
  type: "response",
635
739
  time: (/* @__PURE__ */ new Date()).toISOString(),
636
740
  status: response.status,
@@ -641,8 +745,8 @@ var CallsServicePeer = class extends Resource2 {
641
745
  text,
642
746
  status: response.status
643
747
  }, {
644
- F: __dxlog_file2,
645
- L: 191,
748
+ F: __dxlog_file3,
749
+ L: 196,
646
750
  S: this,
647
751
  C: (f, a) => f(...a)
648
752
  });
@@ -651,8 +755,8 @@ var CallsServicePeer = class extends Resource2 {
651
755
  }
652
756
  async _pushTrackInBulk({ ctx, peerConnection, transceiver, sessionId, trackName }) {
653
757
  log2.verbose("pushing track ", trackName, {
654
- F: __dxlog_file2,
655
- L: 213,
758
+ F: __dxlog_file3,
759
+ L: 218,
656
760
  S: this,
657
761
  C: (f, a) => f(...a)
658
762
  });
@@ -677,9 +781,9 @@ var CallsServicePeer = class extends Resource2 {
677
781
  }))
678
782
  })
679
783
  });
680
- invariant2(response.tracks !== void 0, void 0, {
681
- F: __dxlog_file2,
682
- L: 238,
784
+ invariant3(response.tracks !== void 0, void 0, {
785
+ F: __dxlog_file3,
786
+ L: 243,
683
787
  S: this,
684
788
  A: [
685
789
  "response.tracks !== undefined",
@@ -693,7 +797,7 @@ var CallsServicePeer = class extends Resource2 {
693
797
  return {
694
798
  tracks: response.tracks
695
799
  };
696
- })).then(({ tracks }) => {
800
+ })).then(async ({ tracks }) => {
697
801
  const trackData = tracks.find((t) => t.mid === transceiver.mid);
698
802
  if (trackData) {
699
803
  return {
@@ -703,19 +807,12 @@ var CallsServicePeer = class extends Resource2 {
703
807
  };
704
808
  } else {
705
809
  log2.error("missing track data", void 0, {
706
- F: __dxlog_file2,
707
- L: 258,
810
+ F: __dxlog_file3,
811
+ L: 267,
708
812
  S: this,
709
813
  C: (f, a) => f(...a)
710
814
  });
711
815
  }
712
- }).catch((err) => {
713
- log2.catch(err, void 0, {
714
- F: __dxlog_file2,
715
- L: 262,
716
- S: this,
717
- C: (f, a) => f(...a)
718
- });
719
816
  });
720
817
  const onDispose = async () => {
721
818
  if (transceiver.mid) {
@@ -728,9 +825,9 @@ var CallsServicePeer = class extends Resource2 {
728
825
  }
729
826
  async pushTrack({ track, encodings = [], ctx, previousTrack }) {
730
827
  await this.waitUntilOpen();
731
- invariant2(this.session, void 0, {
732
- F: __dxlog_file2,
733
- L: 289,
828
+ invariant3(this.session, void 0, {
829
+ F: __dxlog_file3,
830
+ L: 295,
734
831
  S: this,
735
832
  A: [
736
833
  "this.session",
@@ -742,8 +839,8 @@ var CallsServicePeer = class extends Resource2 {
742
839
  previousTrack,
743
840
  encodings
744
841
  }, {
745
- F: __dxlog_file2,
746
- L: 290,
842
+ F: __dxlog_file3,
843
+ L: 296,
747
844
  S: this,
748
845
  C: (f, a) => f(...a)
749
846
  });
@@ -755,8 +852,8 @@ var CallsServicePeer = class extends Resource2 {
755
852
  previousTrack,
756
853
  transceiver: transceiver2
757
854
  }, {
758
- F: __dxlog_file2,
759
- L: 294,
855
+ F: __dxlog_file3,
856
+ L: 300,
760
857
  S: this,
761
858
  C: (f, a) => f(...a)
762
859
  });
@@ -767,23 +864,23 @@ var CallsServicePeer = class extends Resource2 {
767
864
  previousTrack,
768
865
  transceiver: transceiver2
769
866
  }, {
770
- F: __dxlog_file2,
771
- L: 297,
867
+ F: __dxlog_file3,
868
+ L: 303,
772
869
  S: this,
773
870
  C: (f, a) => f(...a)
774
871
  });
775
872
  transceiver2.sender.replaceTrack(track).catch((err) => log2.catch(err, void 0, {
776
- F: __dxlog_file2,
777
- L: 298,
873
+ F: __dxlog_file3,
874
+ L: 304,
778
875
  S: this,
779
876
  C: (f, a) => f(...a)
780
877
  }));
781
878
  return previousTrack;
782
879
  }
783
880
  }
784
- invariant2(track, void 0, {
785
- F: __dxlog_file2,
786
- L: 302,
881
+ invariant3(track, void 0, {
882
+ F: __dxlog_file3,
883
+ L: 308,
787
884
  S: this,
788
885
  A: [
789
886
  "track",
@@ -795,8 +892,8 @@ var CallsServicePeer = class extends Resource2 {
795
892
  direction: "sendonly"
796
893
  });
797
894
  log2.verbose("creating transceiver", void 0, {
798
- F: __dxlog_file2,
799
- L: 307,
895
+ F: __dxlog_file3,
896
+ L: 313,
800
897
  S: this,
801
898
  C: (f, a) => f(...a)
802
899
  });
@@ -807,9 +904,9 @@ var CallsServicePeer = class extends Resource2 {
807
904
  sessionId: this.session.sessionId,
808
905
  trackName: stableId
809
906
  });
810
- invariant2(pushedTrackData, void 0, {
811
- F: __dxlog_file2,
812
- L: 316,
907
+ invariant3(pushedTrackData, void 0, {
908
+ F: __dxlog_file3,
909
+ L: 322,
813
910
  S: this,
814
911
  A: [
815
912
  "pushedTrackData",
@@ -825,8 +922,8 @@ var CallsServicePeer = class extends Resource2 {
825
922
  };
826
923
  });
827
924
  transceiver.sender.setParameters(parameters).catch((err) => log2.catch(err, void 0, {
828
- F: __dxlog_file2,
829
- L: 323,
925
+ F: __dxlog_file3,
926
+ L: 329,
830
927
  S: this,
831
928
  C: (f, a) => f(...a)
832
929
  }));
@@ -838,8 +935,8 @@ var CallsServicePeer = class extends Resource2 {
838
935
  log2("pulling track", {
839
936
  trackName: trackData.trackName
840
937
  }, {
841
- F: __dxlog_file2,
842
- L: 341,
938
+ F: __dxlog_file3,
939
+ L: 347,
843
940
  S: this,
844
941
  C: (f, a) => f(...a)
845
942
  });
@@ -853,9 +950,9 @@ var CallsServicePeer = class extends Resource2 {
853
950
  if (newTrackResponse.errorCode) {
854
951
  throw new Error(newTrackResponse.errorDescription);
855
952
  }
856
- invariant2(newTrackResponse.tracks, void 0, {
857
- F: __dxlog_file2,
858
- L: 354,
953
+ invariant3(newTrackResponse.tracks, void 0, {
954
+ F: __dxlog_file3,
955
+ L: 360,
859
956
  S: this,
860
957
  A: [
861
958
  "newTrackResponse.tracks",
@@ -901,18 +998,18 @@ var CallsServicePeer = class extends Resource2 {
901
998
  mid = trackInfo.mid;
902
999
  return track;
903
1000
  }).catch((err) => log2.catch(err, void 0, {
904
- F: __dxlog_file2,
905
- L: 406,
1001
+ F: __dxlog_file3,
1002
+ L: 412,
906
1003
  S: this,
907
1004
  C: (f, a) => f(...a)
908
1005
  }));
909
1006
  } else {
910
- log2.warn("missing track info", {
1007
+ log2.info("missing track info", {
911
1008
  trackData,
912
1009
  availableTracks: Array.from(trackMap.keys())
913
1010
  }, {
914
- F: __dxlog_file2,
915
- L: 408,
1011
+ F: __dxlog_file3,
1012
+ L: 414,
916
1013
  S: this,
917
1014
  C: (f, a) => f(...a)
918
1015
  });
@@ -921,8 +1018,8 @@ var CallsServicePeer = class extends Resource2 {
921
1018
  const onDispose = async () => {
922
1019
  if (mid) {
923
1020
  log2("closing pulled track ", trackData.trackName, {
924
- F: __dxlog_file2,
925
- L: 414,
1021
+ F: __dxlog_file3,
1022
+ L: 420,
926
1023
  S: this,
927
1024
  C: (f, a) => f(...a)
928
1025
  });
@@ -936,9 +1033,9 @@ var CallsServicePeer = class extends Resource2 {
936
1033
  }
937
1034
  async pullTrack({ ctx, trackData }) {
938
1035
  await this.waitUntilOpen();
939
- invariant2(this.session, void 0, {
940
- F: __dxlog_file2,
941
- L: 435,
1036
+ invariant3(this.session, void 0, {
1037
+ F: __dxlog_file3,
1038
+ L: 441,
942
1039
  S: this,
943
1040
  A: [
944
1041
  "this.session",
@@ -990,6 +1087,13 @@ var CallsServicePeer = class extends Resource2 {
990
1087
  }
991
1088
  }));
992
1089
  }
1090
+ constructor(config) {
1091
+ super(), _define_property3(this, "history", new HistoryCache(100)), _define_property3(this, "_persistentLifecycle", new PersistentLifecycle({
1092
+ start: () => this._startSession(),
1093
+ stop: (session) => this._stopSession(session)
1094
+ })), _define_property3(this, "_config", void 0), _define_property3(this, "taskScheduler", new FIFOScheduler()), _define_property3(this, "pushTrackDispatcher", new BulkRequestDispatcher(32)), _define_property3(this, "pullTrackDispatcher", new BulkRequestDispatcher(32)), _define_property3(this, "closeTrackDispatcher", new BulkRequestDispatcher(32));
1095
+ this._config = config;
1096
+ }
993
1097
  };
994
1098
  var resolveTrack = async (peerConnection, compare, timeout = NETWORK_TIMEOUT) => new Promise((resolve, reject) => {
995
1099
  setTimeout(reject, timeout);
@@ -1024,9 +1128,9 @@ var peerConnectionIsConnected = async (peerConnection) => {
1024
1128
 
1025
1129
  // src/calls/util/media.ts
1026
1130
  import { log as log3 } from "@dxos/log";
1027
- var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/media.ts";
1131
+ var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/media.ts";
1028
1132
  var getUserMediaTrack = async (kind, constraints = {}, deviceList) => {
1029
- deviceList ??= (await getDeviceList()).filter((device) => device.kind === kind);
1133
+ deviceList ?? (deviceList = (await getDeviceList()).filter((device) => device.kind === kind));
1030
1134
  const firstDevice = deviceList[0];
1031
1135
  if (!firstDevice) {
1032
1136
  throw new Error("No devices found");
@@ -1036,7 +1140,7 @@ var getUserMediaTrack = async (kind, constraints = {}, deviceList) => {
1036
1140
  var acquireTrack = async (device, constraints) => {
1037
1141
  const { deviceId, label } = device;
1038
1142
  log3.info(`requesting ${label}`, void 0, {
1039
- F: __dxlog_file3,
1143
+ F: __dxlog_file4,
1040
1144
  L: 23,
1041
1145
  S: void 0,
1042
1146
  C: (f, a) => f(...a)
@@ -1081,26 +1185,24 @@ var getScreenshare = async ({ contentHint }) => {
1081
1185
  // src/calls/speaking-monitor.ts
1082
1186
  import { DeferredTask as DeferredTask2, Event as Event2, sleep } from "@dxos/async";
1083
1187
  import { Resource as Resource3 } from "@dxos/context";
1188
+ function _define_property4(obj, key, value) {
1189
+ if (key in obj) {
1190
+ Object.defineProperty(obj, key, {
1191
+ value,
1192
+ enumerable: true,
1193
+ configurable: true,
1194
+ writable: true
1195
+ });
1196
+ } else {
1197
+ obj[key] = value;
1198
+ }
1199
+ return obj;
1200
+ }
1084
1201
  var NOT_SPEAKING_AFTER = 500;
1085
1202
  var START_SPEAKING_THRESHOLD = 0.05;
1086
1203
  var CONTINUE_SPEAKING_THRESHOLD = 0.02;
1087
1204
  var MIN_EVENT_INTERVAL = 100;
1088
1205
  var SpeakingMonitor = class extends Resource3 {
1089
- _mediaStreamTrack;
1090
- /**
1091
- * Event that is emitted when the user starts or stops speaking.
1092
- * It is debounced to prevent rapid state changes.
1093
- */
1094
- speakingChanged;
1095
- /**
1096
- * Real state of the user speaking.
1097
- */
1098
- _isSpeaking;
1099
- _lastEventTime;
1100
- _deferredUpdate;
1101
- constructor(_mediaStreamTrack) {
1102
- super(), this._mediaStreamTrack = _mediaStreamTrack, this.speakingChanged = new Event2(), this._isSpeaking = false, this._lastEventTime = 0;
1103
- }
1104
1206
  get isSpeaking() {
1105
1207
  return this._isSpeaking;
1106
1208
  }
@@ -1144,37 +1246,50 @@ var SpeakingMonitor = class extends Resource3 {
1144
1246
  this._lastEventTime = Date.now();
1145
1247
  this.speakingChanged.emit(this._isSpeaking);
1146
1248
  }
1249
+ constructor(_mediaStreamTrack) {
1250
+ super(), _define_property4(this, "_mediaStreamTrack", void 0), /**
1251
+ * Event that is emitted when the user starts or stops speaking.
1252
+ * It is debounced to prevent rapid state changes.
1253
+ */
1254
+ _define_property4(this, "speakingChanged", void 0), /**
1255
+ * Real state of the user speaking.
1256
+ */
1257
+ _define_property4(this, "_isSpeaking", void 0), _define_property4(this, "_lastEventTime", void 0), _define_property4(this, "_deferredUpdate", void 0), this._mediaStreamTrack = _mediaStreamTrack, this.speakingChanged = new Event2(), this._isSpeaking = false, this._lastEventTime = 0;
1258
+ }
1147
1259
  };
1148
1260
 
1149
1261
  // src/calls/media-manager.ts
1150
1262
  import { DeferredTask as DeferredTask3, Event as Event3, sleep as sleep2, synchronized as synchronized2 } from "@dxos/async";
1151
1263
  import { Resource as Resource4, cancelWithContext } from "@dxos/context";
1264
+ import { invariant as invariant4 } from "@dxos/invariant";
1152
1265
  import { log as log4 } from "@dxos/log";
1266
+ function _define_property5(obj, key, value) {
1267
+ if (key in obj) {
1268
+ Object.defineProperty(obj, key, {
1269
+ value,
1270
+ enumerable: true,
1271
+ configurable: true,
1272
+ writable: true
1273
+ });
1274
+ } else {
1275
+ obj[key] = value;
1276
+ }
1277
+ return obj;
1278
+ }
1153
1279
  function _ts_decorate2(decorators, target, key, desc) {
1154
1280
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1155
1281
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1156
1282
  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;
1157
1283
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1158
1284
  }
1159
- var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/media-manager.ts";
1285
+ var __dxlog_file5 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/media-manager.ts";
1160
1286
  var VIDEO_WIDTH = 1280;
1161
1287
  var VIDEO_HEIGHT = 720;
1162
1288
  var MAX_WEB_CAM_FRAMERATE = 24;
1163
1289
  var MAX_WEB_CAM_BITRATE = 12e5;
1164
- var RETRY_INTERVAL = 500;
1165
- var USE_INAUDIBLE_AUDIO = false;
1290
+ var RETRY_INTERVAL = 100;
1291
+ var USE_INAUDIBLE_AUDIO = true;
1166
1292
  var MediaManager = class extends Resource4 {
1167
- stateUpdated = new Event3();
1168
- _state = {
1169
- pulledVideoStreams: {},
1170
- pulledAudioTracks: {}
1171
- };
1172
- _speakingMonitor = void 0;
1173
- _trackToReconcile = [];
1174
- _blackCanvasStreamTrack = void 0;
1175
- _inaudibleAudioStreamTrack = void 0;
1176
- _pushTracksTask = void 0;
1177
- _pullTracksTask = void 0;
1178
1293
  get isSpeaking() {
1179
1294
  return this._speakingMonitor?.isSpeaking;
1180
1295
  }
@@ -1313,8 +1428,8 @@ var MediaManager = class extends Resource4 {
1313
1428
  }
1314
1429
  async _reconcilePulledMedia() {
1315
1430
  log4("reconciling tracks", void 0, {
1316
- F: __dxlog_file4,
1317
- L: 222,
1431
+ F: __dxlog_file5,
1432
+ L: 223,
1318
1433
  S: this,
1319
1434
  C: (f, a) => f(...a)
1320
1435
  });
@@ -1331,12 +1446,12 @@ var MediaManager = class extends Resource4 {
1331
1446
  currentAudioTracks: Object.keys(this._state.pulledAudioTracks),
1332
1447
  currentVideoStreams: Object.keys(this._state.pulledVideoStreams)
1333
1448
  }, {
1334
- F: __dxlog_file4,
1335
- L: 241,
1449
+ F: __dxlog_file5,
1450
+ L: 242,
1336
1451
  S: this,
1337
1452
  C: (f, a) => f(...a)
1338
1453
  });
1339
- await Promise.all(tracksToPull.map((name) => this._pullTrack(name)));
1454
+ const pullResults = await Promise.all(tracksToPull.map((name) => this._pullTrack(name)));
1340
1455
  await Promise.all([
1341
1456
  ...audioTracksToClose,
1342
1457
  ...videoStreamsToClose
@@ -1345,55 +1460,102 @@ var MediaManager = class extends Resource4 {
1345
1460
  currentAudioTracks: Object.keys(this._state.pulledAudioTracks),
1346
1461
  currentVideoStreams: Object.keys(this._state.pulledVideoStreams)
1347
1462
  }, {
1348
- F: __dxlog_file4,
1349
- L: 256,
1463
+ F: __dxlog_file5,
1464
+ L: 257,
1350
1465
  S: this,
1351
1466
  C: (f, a) => f(...a)
1352
1467
  });
1353
1468
  this.stateUpdated.emit(this._state);
1469
+ if (pullResults.some(({ shouldRetry }) => shouldRetry)) {
1470
+ await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
1471
+ log4.info("retrying pull tracks", {
1472
+ tracksToPull
1473
+ }, {
1474
+ F: __dxlog_file5,
1475
+ L: 265,
1476
+ S: this,
1477
+ C: (f, a) => f(...a)
1478
+ });
1479
+ invariant4(this._pullTracksTask, void 0, {
1480
+ F: __dxlog_file5,
1481
+ L: 266,
1482
+ S: this,
1483
+ A: [
1484
+ "this._pullTracksTask",
1485
+ ""
1486
+ ]
1487
+ });
1488
+ this._pullTracksTask.schedule();
1489
+ }
1354
1490
  }
1355
1491
  async _pushTracks() {
1356
1492
  if (!this._state.peer?.isOpen) {
1357
1493
  return;
1358
1494
  }
1359
1495
  let updated = false;
1360
- const [pushedVideoTrack, pushedAudioTrack, pushedScreenshareTrack] = await Promise.all([
1361
- this._pushTrack(this._state.videoTrack, this._state.pushedVideoTrack, [
1496
+ const [pushVideoResult, pushAudioResult, pushScreenshareResult] = await Promise.all([
1497
+ this._maybePushTrack(this._state.videoTrack, this._state.pushedVideoTrack, [
1362
1498
  {
1363
1499
  maxFramerate: MAX_WEB_CAM_FRAMERATE,
1364
1500
  maxBitrate: MAX_WEB_CAM_BITRATE
1365
1501
  }
1366
1502
  ]),
1367
- this._pushTrack(this._state.audioTrack, this._state.pushedAudioTrack, [
1503
+ this._maybePushTrack(this._state.audioTrack, this._state.pushedAudioTrack, [
1368
1504
  {
1369
1505
  networkPriority: "high"
1370
1506
  }
1371
1507
  ]),
1372
- this._pushTrack(this._state.screenshareTrack, this._state.pushedScreenshareTrack)
1508
+ this._maybePushTrack(this._state.screenshareTrack, this._state.pushedScreenshareTrack)
1373
1509
  ]);
1374
- if (pushedVideoTrack !== this._state.pushedVideoTrack) {
1375
- this._state.pushedVideoTrack = pushedVideoTrack;
1510
+ if (pushVideoResult.track !== this._state.pushedVideoTrack) {
1511
+ this._state.pushedVideoTrack = pushVideoResult.track;
1376
1512
  updated = true;
1377
1513
  }
1378
- if (pushedAudioTrack !== this._state.pushedAudioTrack) {
1379
- this._state.pushedAudioTrack = pushedAudioTrack;
1514
+ if (pushAudioResult.track !== this._state.pushedAudioTrack) {
1515
+ this._state.pushedAudioTrack = pushAudioResult.track;
1380
1516
  updated = true;
1381
1517
  }
1382
- if (pushedScreenshareTrack !== this._state.pushedScreenshareTrack) {
1383
- this._state.pushedScreenshareTrack = pushedScreenshareTrack;
1518
+ if (pushScreenshareResult.track !== this._state.pushedScreenshareTrack) {
1519
+ this._state.pushedScreenshareTrack = pushScreenshareResult.track;
1384
1520
  updated = true;
1385
1521
  }
1386
- if (!updated) {
1387
- return;
1522
+ const shouldRetry = pushVideoResult.shouldRetry || pushAudioResult.shouldRetry || pushScreenshareResult.shouldRetry;
1523
+ if (updated) {
1524
+ this.stateUpdated.emit(this._state);
1525
+ }
1526
+ if (shouldRetry) {
1527
+ await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
1528
+ log4.info("retrying push tracks", {
1529
+ pushVideoResult,
1530
+ pushAudioResult,
1531
+ pushScreenshareResult
1532
+ }, {
1533
+ F: __dxlog_file5,
1534
+ L: 306,
1535
+ S: this,
1536
+ C: (f, a) => f(...a)
1537
+ });
1538
+ invariant4(this._pushTracksTask, void 0, {
1539
+ F: __dxlog_file5,
1540
+ L: 307,
1541
+ S: this,
1542
+ A: [
1543
+ "this._pushTracksTask",
1544
+ ""
1545
+ ]
1546
+ });
1547
+ this._pushTracksTask.schedule();
1388
1548
  }
1389
- this.stateUpdated.emit(this._state);
1390
1549
  }
1391
1550
  async _pullTrack(name) {
1392
1551
  const ctx = this._ctx.derive();
1393
1552
  try {
1394
1553
  const trackData = TrackNameCodec.decode(name);
1395
1554
  const track = await this._state.peer.pullTrack({
1396
- trackData,
1555
+ trackData: {
1556
+ ...trackData,
1557
+ mid: void 0
1558
+ },
1397
1559
  ctx
1398
1560
  });
1399
1561
  if (track?.readyState === "ended") {
@@ -1406,7 +1568,9 @@ var MediaManager = class extends Resource4 {
1406
1568
  ctx
1407
1569
  };
1408
1570
  ctx.onDispose(() => delete this._state.pulledAudioTracks[name]);
1409
- break;
1571
+ return {
1572
+ shouldRetry: false
1573
+ };
1410
1574
  }
1411
1575
  case "video": {
1412
1576
  const mediaStream = new MediaStream();
@@ -1420,43 +1584,68 @@ var MediaManager = class extends Resource4 {
1420
1584
  track.stop();
1421
1585
  delete this._state.pulledVideoStreams[name];
1422
1586
  });
1423
- break;
1587
+ return {
1588
+ shouldRetry: false
1589
+ };
1424
1590
  }
1425
1591
  default:
1426
1592
  throw new Error(`Invalid track kind: ${track?.kind}`);
1427
1593
  }
1428
1594
  } catch (err) {
1429
- log4.verbose("failed to pull track", {
1595
+ log4.info("failed to pull track", {
1430
1596
  err,
1431
1597
  name
1432
1598
  }, {
1433
- F: __dxlog_file4,
1434
- L: 326,
1599
+ F: __dxlog_file5,
1600
+ L: 343,
1435
1601
  S: this,
1436
1602
  C: (f, a) => f(...a)
1437
1603
  });
1438
1604
  void ctx.dispose();
1439
- await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
1440
- log4.verbose("retrying pull track", {
1441
- name
1605
+ return {
1606
+ shouldRetry: true
1607
+ };
1608
+ }
1609
+ }
1610
+ async _maybePushTrack(track, previousTrack, encodings) {
1611
+ if (!track && !previousTrack) {
1612
+ return {
1613
+ track: void 0
1614
+ };
1615
+ }
1616
+ const ctx = this._ctx.derive();
1617
+ try {
1618
+ return {
1619
+ track: await this._state.peer.pushTrack({
1620
+ ctx,
1621
+ track: track ?? null,
1622
+ previousTrack,
1623
+ encodings
1624
+ })
1625
+ };
1626
+ } catch (err) {
1627
+ log4.info("failed to push track", {
1628
+ err,
1629
+ track,
1630
+ previousTrack,
1631
+ encodings
1442
1632
  }, {
1443
- F: __dxlog_file4,
1444
- L: 329,
1633
+ F: __dxlog_file5,
1634
+ L: 370,
1445
1635
  S: this,
1446
1636
  C: (f, a) => f(...a)
1447
1637
  });
1448
- this._pullTracksTask.schedule();
1638
+ void ctx.dispose();
1639
+ return {
1640
+ shouldRetry: true
1641
+ };
1449
1642
  }
1450
1643
  }
1451
- async _pushTrack(track, previousTrack, encodings) {
1452
- if (!track && !previousTrack) {
1453
- return;
1454
- }
1455
- return this._state.peer.pushTrack({
1456
- track: track ?? null,
1457
- previousTrack,
1458
- encodings
1459
- });
1644
+ constructor(...args) {
1645
+ super(...args), _define_property5(this, "stateUpdated", new Event3()), _define_property5(this, "_state", {
1646
+ pulledVideoStreams: {},
1647
+ pulledAudioTracks: {}
1648
+ }), _define_property5(this, "_speakingMonitor", void 0), _define_property5(this, "_trackToReconcile", []), _define_property5(this, "_blackCanvasStreamTrack", void 0), _define_property5(this, "_inaudibleAudioStreamTrack", void 0), _define_property5(this, "_pushTracksTask", void 0), _define_property5(this, "_pullTracksTask", void 0);
1460
1649
  }
1461
1650
  };
1462
1651
  _ts_decorate2([
@@ -1470,33 +1659,30 @@ _ts_decorate2([
1470
1659
  import { computed } from "@preact/signals-core";
1471
1660
  import { Event as Event4, synchronized as synchronized3 } from "@dxos/async";
1472
1661
  import { Resource as Resource5 } from "@dxos/context";
1473
- import { invariant as invariant3 } from "@dxos/invariant";
1662
+ import { invariant as invariant5 } from "@dxos/invariant";
1474
1663
  import { live } from "@dxos/live-object";
1475
1664
  import { isNonNullable as isNonNullable2 } from "@dxos/util";
1665
+ function _define_property6(obj, key, value) {
1666
+ if (key in obj) {
1667
+ Object.defineProperty(obj, key, {
1668
+ value,
1669
+ enumerable: true,
1670
+ configurable: true,
1671
+ writable: true
1672
+ });
1673
+ } else {
1674
+ obj[key] = value;
1675
+ }
1676
+ return obj;
1677
+ }
1476
1678
  function _ts_decorate3(decorators, target, key, desc) {
1477
1679
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1478
1680
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1479
1681
  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;
1480
1682
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1481
1683
  }
1482
- var __dxlog_file5 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-manager.ts";
1684
+ var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-manager.ts";
1483
1685
  var CallManager = class extends Resource5 {
1484
- _client;
1485
- callStateUpdated;
1486
- // TODO(wittjosiah): Consolidate isSpeaking into the MediaState type.
1487
- mediaStateUpdated;
1488
- left;
1489
- /**
1490
- * Live object state. Is changed on internal events.
1491
- * CAUTION: Do not change directly.
1492
- */
1493
- _state;
1494
- // TODO(wittjosiah): This shouldn't be necessary, live-object's signals should be granular.
1495
- _raisedHandSignal;
1496
- _speakingSignal;
1497
- _joinedSignal;
1498
- _swarmSynchronizer;
1499
- _mediaManager;
1500
1686
  /** @reactive */
1501
1687
  get roomId() {
1502
1688
  return this._state.call.roomId;
@@ -1575,31 +1761,6 @@ var CallManager = class extends Resource5 {
1575
1761
  turnScreenshareOff() {
1576
1762
  return this._mediaManager.turnScreenshareOff();
1577
1763
  }
1578
- // TODO(burdon): Can this be mocked?
1579
- constructor(_client) {
1580
- super(), this._client = _client, this.callStateUpdated = new Event4(), this.mediaStateUpdated = new Event4(), this.left = new Event4(), this._state = live({
1581
- call: {},
1582
- media: {
1583
- pulledAudioTracks: {},
1584
- pulledVideoStreams: {}
1585
- }
1586
- }), this._raisedHandSignal = computed(() => this._state.call.raisedHand ?? false), this._speakingSignal = computed(() => this._state.call.speaking ?? false), this._joinedSignal = computed(() => this._state.call.joined ?? false);
1587
- this._client.config.getOrThrow("runtime.services.edge.url");
1588
- const networkService = this._client.services.services.NetworkService;
1589
- invariant3(networkService, "network service not found", {
1590
- F: __dxlog_file5,
1591
- L: 159,
1592
- S: this,
1593
- A: [
1594
- "networkService",
1595
- "'network service not found'"
1596
- ]
1597
- });
1598
- this._swarmSynchronizer = new CallSwarmSynchronizer({
1599
- networkService
1600
- });
1601
- this._mediaManager = new MediaManager();
1602
- }
1603
1764
  async _open() {
1604
1765
  await this._mediaManager.open();
1605
1766
  await this._swarmSynchronizer.open();
@@ -1640,7 +1801,7 @@ var CallManager = class extends Resource5 {
1640
1801
  this.roomId && this.left.emit(this.roomId);
1641
1802
  }
1642
1803
  _onCallStateUpdated(state) {
1643
- const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self?.id)?.flatMap((user) => [
1804
+ const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self.id)?.flatMap((user) => [
1644
1805
  user.tracks?.video,
1645
1806
  user.tracks?.audio,
1646
1807
  user.tracks?.screenshare
@@ -1673,6 +1834,37 @@ var CallManager = class extends Resource5 {
1673
1834
  this._state.call = this._swarmSynchronizer._getState();
1674
1835
  this._state.media = this._mediaManager._getState();
1675
1836
  }
1837
+ // TODO(burdon): Can this be mocked?
1838
+ constructor(_client) {
1839
+ super(), _define_property6(this, "_client", void 0), _define_property6(this, "callStateUpdated", void 0), // TODO(wittjosiah): Consolidate isSpeaking into the MediaState type.
1840
+ _define_property6(this, "mediaStateUpdated", void 0), _define_property6(this, "left", void 0), /**
1841
+ * Live object state. Is changed on internal events.
1842
+ * CAUTION: Do not change directly.
1843
+ */
1844
+ _define_property6(this, "_state", void 0), // TODO(wittjosiah): This shouldn't be necessary, live-object's signals should be granular.
1845
+ _define_property6(this, "_raisedHandSignal", void 0), _define_property6(this, "_speakingSignal", void 0), _define_property6(this, "_joinedSignal", void 0), _define_property6(this, "_swarmSynchronizer", void 0), _define_property6(this, "_mediaManager", void 0), this._client = _client, this.callStateUpdated = new Event4(), this.mediaStateUpdated = new Event4(), this.left = new Event4(), this._state = live({
1846
+ call: {},
1847
+ media: {
1848
+ pulledAudioTracks: {},
1849
+ pulledVideoStreams: {}
1850
+ }
1851
+ }), this._raisedHandSignal = computed(() => this._state.call.raisedHand ?? false), this._speakingSignal = computed(() => this._state.call.speaking ?? false), this._joinedSignal = computed(() => this._state.call.joined ?? false);
1852
+ this._client.config.getOrThrow("runtime.services.edge.url");
1853
+ const networkService = this._client.services.services.NetworkService;
1854
+ invariant5(networkService, "network service not found", {
1855
+ F: __dxlog_file6,
1856
+ L: 159,
1857
+ S: this,
1858
+ A: [
1859
+ "networkService",
1860
+ "'network service not found'"
1861
+ ]
1862
+ });
1863
+ this._swarmSynchronizer = new CallSwarmSynchronizer({
1864
+ networkService
1865
+ });
1866
+ this._mediaManager = new MediaManager();
1867
+ }
1676
1868
  };
1677
1869
  _ts_decorate3([
1678
1870
  synchronized3
@@ -1695,4 +1887,4 @@ export {
1695
1887
  MediaManager,
1696
1888
  CallManager
1697
1889
  };
1698
- //# sourceMappingURL=chunk-TUFWPOVS.mjs.map
1890
+ //# sourceMappingURL=chunk-ZCEU5K23.mjs.map