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