@dxos/plugin-thread 0.8.3 → 0.8.4-main.1068cf700f

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 (462) hide show
  1. package/dist/lib/browser/app-graph-builder-XFGLMIGK.mjs +189 -0
  2. package/dist/lib/browser/app-graph-builder-XFGLMIGK.mjs.map +7 -0
  3. package/dist/lib/browser/blueprint-definition-ACPH22F7.mjs +18 -0
  4. package/dist/lib/browser/blueprint-definition-ACPH22F7.mjs.map +7 -0
  5. package/dist/lib/browser/blueprints/index.mjs +8 -0
  6. package/dist/lib/browser/call-manager-GDGIKJKN.mjs +26 -0
  7. package/dist/lib/browser/call-manager-GDGIKJKN.mjs.map +7 -0
  8. package/dist/lib/browser/chunk-2FIHSX35.mjs +293 -0
  9. package/dist/lib/browser/chunk-2FIHSX35.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-4EUEMHNI.mjs +1817 -0
  11. package/dist/lib/browser/chunk-4EUEMHNI.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-JKQUJOTX.mjs → chunk-CP7E2HRE.mjs} +3 -3
  13. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-4H4A264L.mjs → chunk-ERK254BS.mjs} +407 -305
  15. package/dist/lib/browser/chunk-ERK254BS.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-ISCHODBV.mjs +106 -0
  17. package/dist/lib/browser/chunk-ISCHODBV.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  19. package/dist/lib/browser/chunk-JBB73URQ.mjs +184 -0
  20. package/dist/lib/browser/chunk-JBB73URQ.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-RH7XTXSR.mjs +106 -0
  22. package/dist/lib/browser/chunk-RH7XTXSR.mjs.map +7 -0
  23. package/dist/lib/browser/index.mjs +164 -151
  24. package/dist/lib/browser/index.mjs.map +4 -4
  25. package/dist/lib/browser/markdown-YJCSOWXX.mjs +210 -0
  26. package/dist/lib/browser/markdown-YJCSOWXX.mjs.map +7 -0
  27. package/dist/lib/browser/meta.json +1 -1
  28. package/dist/lib/browser/operation-resolver-PROCP5L4.mjs +441 -0
  29. package/dist/lib/browser/operation-resolver-PROCP5L4.mjs.map +7 -0
  30. package/dist/lib/browser/react-root-FHK2SVPU.mjs +25 -0
  31. package/dist/lib/browser/react-root-FHK2SVPU.mjs.map +7 -0
  32. package/dist/lib/browser/react-surface-7MQA6VSH.mjs +111 -0
  33. package/dist/lib/browser/react-surface-7MQA6VSH.mjs.map +7 -0
  34. package/dist/lib/browser/repair-6OZ75AUU.mjs +38 -0
  35. package/dist/lib/browser/repair-6OZ75AUU.mjs.map +7 -0
  36. package/dist/lib/browser/settings-TWKOTGSU.mjs +33 -0
  37. package/dist/lib/browser/settings-TWKOTGSU.mjs.map +7 -0
  38. package/dist/lib/browser/state-SJR2GL5G.mjs +24 -0
  39. package/dist/lib/browser/state-SJR2GL5G.mjs.map +7 -0
  40. package/dist/lib/browser/types/index.mjs +10 -12
  41. package/dist/lib/node-esm/app-graph-builder-IN6VLJBO.mjs +190 -0
  42. package/dist/lib/node-esm/app-graph-builder-IN6VLJBO.mjs.map +7 -0
  43. package/dist/lib/node-esm/blueprint-definition-SXVKFUNV.mjs +19 -0
  44. package/dist/lib/node-esm/blueprint-definition-SXVKFUNV.mjs.map +7 -0
  45. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  46. package/dist/lib/node-esm/call-manager-36UAAQCJ.mjs +27 -0
  47. package/dist/lib/node-esm/call-manager-36UAAQCJ.mjs.map +7 -0
  48. package/dist/lib/node-esm/{chunk-PGRP3O4O.mjs → chunk-ABUFOZVX.mjs} +3 -3
  49. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +7 -0
  50. package/dist/lib/node-esm/chunk-G7PZNN3Z.mjs +185 -0
  51. package/dist/lib/node-esm/chunk-G7PZNN3Z.mjs.map +7 -0
  52. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  53. package/dist/lib/node-esm/chunk-OKVE6CLS.mjs +107 -0
  54. package/dist/lib/node-esm/chunk-OKVE6CLS.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-WXNPD542.mjs → chunk-QP3KQOPQ.mjs} +406 -305
  56. package/dist/lib/node-esm/chunk-QP3KQOPQ.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-RBRWHRHE.mjs +1818 -0
  58. package/dist/lib/node-esm/chunk-RBRWHRHE.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-VBI32FGI.mjs +108 -0
  60. package/dist/lib/node-esm/chunk-VBI32FGI.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-WMWUXWAS.mjs +294 -0
  62. package/dist/lib/node-esm/chunk-WMWUXWAS.mjs.map +7 -0
  63. package/dist/lib/node-esm/index.mjs +164 -151
  64. package/dist/lib/node-esm/index.mjs.map +4 -4
  65. package/dist/lib/node-esm/markdown-6LRP3PAP.mjs +211 -0
  66. package/dist/lib/node-esm/markdown-6LRP3PAP.mjs.map +7 -0
  67. package/dist/lib/node-esm/meta.json +1 -1
  68. package/dist/lib/node-esm/operation-resolver-LPEPV5BF.mjs +442 -0
  69. package/dist/lib/node-esm/operation-resolver-LPEPV5BF.mjs.map +7 -0
  70. package/dist/lib/node-esm/react-root-P5P4VGQJ.mjs +26 -0
  71. package/dist/lib/node-esm/react-root-P5P4VGQJ.mjs.map +7 -0
  72. package/dist/lib/node-esm/react-surface-M7VI5XG2.mjs +112 -0
  73. package/dist/lib/node-esm/react-surface-M7VI5XG2.mjs.map +7 -0
  74. package/dist/lib/node-esm/repair-6777EPOM.mjs +39 -0
  75. package/dist/lib/node-esm/repair-6777EPOM.mjs.map +7 -0
  76. package/dist/lib/node-esm/settings-5O254B3Z.mjs +34 -0
  77. package/dist/lib/node-esm/settings-5O254B3Z.mjs.map +7 -0
  78. package/dist/lib/node-esm/state-5R3TZJQE.mjs +25 -0
  79. package/dist/lib/node-esm/state-5R3TZJQE.mjs.map +7 -0
  80. package/dist/lib/node-esm/types/index.mjs +10 -12
  81. package/dist/types/src/ThreadPlugin.d.ts +2 -1
  82. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  83. package/dist/types/src/blueprints/index.d.ts +2 -0
  84. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  85. package/dist/types/src/blueprints/thread-blueprint.d.ts +21 -0
  86. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
  87. package/dist/types/src/calls/call-manager.d.ts +40 -30
  88. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  89. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +2 -2
  90. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  91. package/dist/types/src/calls/media-manager.d.ts +2 -2
  92. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  93. package/dist/types/src/calls/types.d.ts +1 -1
  94. package/dist/types/src/calls/types.d.ts.map +1 -1
  95. package/dist/types/src/calls/util/calls-service.d.ts +9 -4
  96. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  97. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  98. package/dist/types/src/calls/util/task-scheduling.d.ts +2 -2
  99. package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -1
  100. package/dist/types/src/calls-service.stories.d.ts +23 -0
  101. package/dist/types/src/calls-service.stories.d.ts.map +1 -0
  102. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  103. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  104. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  105. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  106. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +10 -0
  107. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  108. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  109. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  110. package/dist/types/src/capabilities/call-manager/call-manager.d.ts +6 -0
  111. package/dist/types/src/capabilities/call-manager/call-manager.d.ts.map +1 -0
  112. package/dist/types/src/capabilities/call-manager/index.d.ts +3 -0
  113. package/dist/types/src/capabilities/call-manager/index.d.ts.map +1 -0
  114. package/dist/types/src/capabilities/index.d.ts +10 -15
  115. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/markdown/index.d.ts +3 -0
  117. package/dist/types/src/capabilities/markdown/index.d.ts.map +1 -0
  118. package/dist/types/src/capabilities/markdown/markdown.d.ts +5 -0
  119. package/dist/types/src/capabilities/markdown/markdown.d.ts.map +1 -0
  120. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  121. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  122. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  123. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  124. package/dist/types/src/capabilities/react-root/index.d.ts +6 -0
  125. package/dist/types/src/capabilities/react-root/index.d.ts.map +1 -0
  126. package/dist/types/src/capabilities/react-root/react-root.d.ts +9 -0
  127. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -0
  128. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  129. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  130. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  131. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  132. package/dist/types/src/capabilities/repair/index.d.ts +3 -0
  133. package/dist/types/src/capabilities/repair/index.d.ts.map +1 -0
  134. package/dist/types/src/capabilities/repair/repair.d.ts +6 -0
  135. package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -0
  136. package/dist/types/src/capabilities/settings/index.d.ts +3 -0
  137. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  138. package/dist/types/src/capabilities/settings/settings.d.ts +6 -0
  139. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  140. package/dist/types/src/capabilities/state/index.d.ts +3 -0
  141. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  142. package/dist/types/src/capabilities/state/state.d.ts +7 -0
  143. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  144. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  145. package/dist/types/src/components/Call/Toolbar.d.ts +2 -2
  146. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  147. package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
  148. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
  149. package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
  150. package/dist/types/src/components/ChannelContainer.d.ts +5 -6
  151. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  152. package/dist/types/src/components/ChannelContainer.stories.d.ts +159 -5
  153. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  154. package/dist/types/src/components/Chat.stories.d.ts +162 -4
  155. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  156. package/dist/types/src/components/ChatContainer.d.ts +8 -7
  157. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  158. package/dist/types/src/components/Comments.stories.d.ts +160 -4
  159. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  160. package/dist/types/src/components/CommentsContainer.d.ts +6 -6
  161. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  162. package/dist/types/src/components/CommentsThreadContainer.d.ts +14 -0
  163. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -0
  164. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  165. package/dist/types/src/components/Media/VideoObject.d.ts +3 -3
  166. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
  167. package/dist/types/src/components/Media/VideoObject.stories.d.ts +18 -4
  168. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  169. package/dist/types/src/components/MessageContainer.d.ts +7 -3
  170. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  171. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  172. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
  173. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +159 -3
  174. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  175. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +161 -4
  176. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  177. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  178. package/dist/types/src/components/ThreadCompanion.d.ts +5 -0
  179. package/dist/types/src/components/ThreadCompanion.d.ts.map +1 -0
  180. package/dist/types/src/components/ThreadSettings.d.ts +4 -2
  181. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  182. package/dist/types/src/components/command-extension.d.ts.map +1 -1
  183. package/dist/types/src/components/index.d.ts +4 -4
  184. package/dist/types/src/components/index.d.ts.map +1 -1
  185. package/dist/types/src/components/testing.d.ts +3 -2
  186. package/dist/types/src/components/testing.d.ts.map +1 -1
  187. package/dist/types/src/extensions/threads.d.ts +8 -3
  188. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  189. package/dist/types/src/functions/create-proposals.d.ts +13 -0
  190. package/dist/types/src/functions/create-proposals.d.ts.map +1 -0
  191. package/dist/types/src/functions/index.d.ts +2 -0
  192. package/dist/types/src/functions/index.d.ts.map +1 -0
  193. package/dist/types/src/hooks/analytics.d.ts +2 -3
  194. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  195. package/dist/types/src/hooks/index.d.ts +3 -0
  196. package/dist/types/src/hooks/index.d.ts.map +1 -1
  197. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
  198. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
  199. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts +2 -0
  200. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts.map +1 -0
  201. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +3 -0
  202. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -0
  203. package/dist/types/src/index.d.ts +1 -1
  204. package/dist/types/src/index.d.ts.map +1 -1
  205. package/dist/types/src/meta.d.ts +3 -4
  206. package/dist/types/src/meta.d.ts.map +1 -1
  207. package/dist/types/src/testing/stories.d.ts +2 -1
  208. package/dist/types/src/testing/stories.d.ts.map +1 -1
  209. package/dist/types/src/translations.d.ts +146 -194
  210. package/dist/types/src/translations.d.ts.map +1 -1
  211. package/dist/types/src/types/Channel.d.ts +695 -0
  212. package/dist/types/src/types/Channel.d.ts.map +1 -0
  213. package/dist/types/src/types/capabilities.d.ts +23 -0
  214. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  215. package/dist/types/src/types/index.d.ts +2 -1
  216. package/dist/types/src/types/index.d.ts.map +1 -1
  217. package/dist/types/src/types/types.d.ts +3224 -320
  218. package/dist/types/src/types/types.d.ts.map +1 -1
  219. package/dist/types/src/util.d.ts +17 -2
  220. package/dist/types/src/util.d.ts.map +1 -1
  221. package/dist/types/tsconfig.tsbuildinfo +1 -1
  222. package/package.json +93 -67
  223. package/src/ThreadPlugin.tsx +107 -143
  224. package/src/blueprints/index.ts +5 -0
  225. package/src/blueprints/thread-blueprint.ts +32 -0
  226. package/src/calls/call-manager.ts +78 -50
  227. package/src/calls/call-swarm-synchronizer.ts +3 -3
  228. package/src/calls/media-manager.ts +77 -41
  229. package/src/calls/types.ts +8 -4
  230. package/src/calls/util/calls-service.ts +73 -19
  231. package/src/calls/util/stub-media-streams.ts +63 -9
  232. package/src/calls/util/task-scheduling.ts +4 -4
  233. package/src/calls-service.stories.tsx +229 -0
  234. package/src/capabilities/app-graph-builder/app-graph-builder.ts +202 -0
  235. package/src/capabilities/app-graph-builder/index.ts +7 -0
  236. package/src/capabilities/blueprint-definition/blueprint-definition.ts +24 -0
  237. package/src/capabilities/blueprint-definition/index.ts +7 -0
  238. package/src/capabilities/call-manager/call-manager.ts +26 -0
  239. package/src/capabilities/call-manager/index.ts +7 -0
  240. package/src/capabilities/index.ts +10 -12
  241. package/src/capabilities/markdown/index.ts +7 -0
  242. package/src/capabilities/markdown/markdown.ts +83 -0
  243. package/src/capabilities/operation-resolver/index.ts +7 -0
  244. package/src/capabilities/operation-resolver/operation-resolver.ts +400 -0
  245. package/src/capabilities/react-root/index.ts +7 -0
  246. package/src/capabilities/react-root/react-root.tsx +20 -0
  247. package/src/capabilities/react-surface/index.ts +7 -0
  248. package/src/capabilities/react-surface/react-surface.tsx +98 -0
  249. package/src/capabilities/repair/index.ts +7 -0
  250. package/src/capabilities/repair/repair.ts +51 -0
  251. package/src/capabilities/settings/index.ts +7 -0
  252. package/src/capabilities/settings/settings.ts +34 -0
  253. package/src/capabilities/state/index.ts +7 -0
  254. package/src/capabilities/state/state.ts +22 -0
  255. package/src/components/Call/Call.tsx +11 -6
  256. package/src/components/Call/Toolbar.tsx +42 -33
  257. package/src/components/CallDebugPanel.tsx +114 -57
  258. package/src/components/CallSidebar.tsx +6 -3
  259. package/src/components/ChannelContainer.stories.tsx +23 -21
  260. package/src/components/ChannelContainer.tsx +47 -38
  261. package/src/components/Chat.stories.tsx +37 -39
  262. package/src/components/ChatContainer.tsx +56 -44
  263. package/src/components/Comments.stories.tsx +63 -55
  264. package/src/components/CommentsContainer.tsx +20 -16
  265. package/src/components/CommentsThreadContainer.tsx +173 -0
  266. package/src/components/Lobby/Lobby.tsx +10 -8
  267. package/src/components/Media/AudioStream.tsx +2 -2
  268. package/src/components/Media/VideoObject.stories.tsx +36 -28
  269. package/src/components/Media/VideoObject.tsx +2 -2
  270. package/src/components/MessageContainer.tsx +117 -68
  271. package/src/components/Participant/Participant.tsx +34 -15
  272. package/src/components/Participant/ParticipantGrid.tsx +2 -1
  273. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +9 -9
  274. package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +3 -3
  275. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +45 -43
  276. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +7 -7
  277. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +10 -7
  278. package/src/components/ThreadCompanion.tsx +194 -0
  279. package/src/components/ThreadSettings.tsx +11 -6
  280. package/src/components/command-extension.ts +7 -4
  281. package/src/components/index.ts +5 -8
  282. package/src/components/testing.ts +28 -8
  283. package/src/extensions/threads.ts +88 -44
  284. package/src/functions/create-proposals.ts +57 -0
  285. package/src/functions/index.ts +5 -0
  286. package/src/hooks/analytics.ts +21 -21
  287. package/src/hooks/index.ts +4 -0
  288. package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
  289. package/src/hooks/useDebugMode.ts +1 -1
  290. package/src/hooks/useInaudibleAudioStreamTrack.tsx +27 -0
  291. package/src/hooks/useVideoStreamTrack.tsx +36 -0
  292. package/src/index.ts +1 -1
  293. package/src/meta.ts +11 -7
  294. package/src/testing/stories.ts +23 -17
  295. package/src/translations.ts +18 -10
  296. package/src/types/Channel.ts +30 -0
  297. package/src/types/capabilities.ts +34 -0
  298. package/src/types/index.ts +2 -1
  299. package/src/types/types.ts +171 -75
  300. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  301. package/src/typings.d.ts +8 -0
  302. package/src/util.ts +1 -1
  303. package/dist/lib/browser/ChannelContainer-PKFBVENP.mjs +0 -15
  304. package/dist/lib/browser/ChatContainer-RSOKYAMK.mjs +0 -14
  305. package/dist/lib/browser/app-graph-builder-OY7R7EJP.mjs +0 -171
  306. package/dist/lib/browser/app-graph-builder-OY7R7EJP.mjs.map +0 -7
  307. package/dist/lib/browser/call-manager-APQAZWHT.mjs +0 -23
  308. package/dist/lib/browser/call-manager-APQAZWHT.mjs.map +0 -7
  309. package/dist/lib/browser/chunk-4H4A264L.mjs.map +0 -7
  310. package/dist/lib/browser/chunk-5P5BH5GE.mjs +0 -88
  311. package/dist/lib/browser/chunk-5P5BH5GE.mjs.map +0 -7
  312. package/dist/lib/browser/chunk-6NBVNXTM.mjs +0 -21
  313. package/dist/lib/browser/chunk-6NBVNXTM.mjs.map +0 -7
  314. package/dist/lib/browser/chunk-AEXWNS6Z.mjs +0 -128
  315. package/dist/lib/browser/chunk-AEXWNS6Z.mjs.map +0 -7
  316. package/dist/lib/browser/chunk-IIUTBDVB.mjs +0 -17
  317. package/dist/lib/browser/chunk-IIUTBDVB.mjs.map +0 -7
  318. package/dist/lib/browser/chunk-JKQUJOTX.mjs.map +0 -7
  319. package/dist/lib/browser/chunk-PG5CTFKK.mjs +0 -550
  320. package/dist/lib/browser/chunk-PG5CTFKK.mjs.map +0 -7
  321. package/dist/lib/browser/chunk-R5MDLUPC.mjs +0 -18
  322. package/dist/lib/browser/chunk-R5MDLUPC.mjs.map +0 -7
  323. package/dist/lib/browser/chunk-TAFSCSUR.mjs +0 -351
  324. package/dist/lib/browser/chunk-TAFSCSUR.mjs.map +0 -7
  325. package/dist/lib/browser/chunk-XZKBN3NS.mjs +0 -983
  326. package/dist/lib/browser/chunk-XZKBN3NS.mjs.map +0 -7
  327. package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs +0 -353
  328. package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs.map +0 -7
  329. package/dist/lib/browser/markdown-TE5SWWNJ.mjs +0 -169
  330. package/dist/lib/browser/markdown-TE5SWWNJ.mjs.map +0 -7
  331. package/dist/lib/browser/react-root-NK3A4VG7.mjs +0 -27
  332. package/dist/lib/browser/react-root-NK3A4VG7.mjs.map +0 -7
  333. package/dist/lib/browser/react-surface-VXUJKSOG.mjs +0 -108
  334. package/dist/lib/browser/react-surface-VXUJKSOG.mjs.map +0 -7
  335. package/dist/lib/browser/settings-RB2RSLXV.mjs +0 -22
  336. package/dist/lib/browser/settings-RB2RSLXV.mjs.map +0 -7
  337. package/dist/lib/browser/state-RKL5MSDP.mjs +0 -34
  338. package/dist/lib/browser/state-RKL5MSDP.mjs.map +0 -7
  339. package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs +0 -36
  340. package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs.map +0 -7
  341. package/dist/lib/node/ChatContainer-GCOM3M56.cjs +0 -35
  342. package/dist/lib/node/ChatContainer-GCOM3M56.cjs.map +0 -7
  343. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs +0 -179
  344. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs.map +0 -7
  345. package/dist/lib/node/call-manager-HV2XJW5O.cjs +0 -37
  346. package/dist/lib/node/call-manager-HV2XJW5O.cjs.map +0 -7
  347. package/dist/lib/node/chunk-44I33JDT.cjs +0 -1731
  348. package/dist/lib/node/chunk-44I33JDT.cjs.map +0 -7
  349. package/dist/lib/node/chunk-4YSNVPWU.cjs +0 -37
  350. package/dist/lib/node/chunk-4YSNVPWU.cjs.map +0 -7
  351. package/dist/lib/node/chunk-E3WBZTTI.cjs +0 -371
  352. package/dist/lib/node/chunk-E3WBZTTI.cjs.map +0 -7
  353. package/dist/lib/node/chunk-ERG7G6FF.cjs +0 -59
  354. package/dist/lib/node/chunk-ERG7G6FF.cjs.map +0 -7
  355. package/dist/lib/node/chunk-FUXJAVFZ.cjs +0 -108
  356. package/dist/lib/node/chunk-FUXJAVFZ.cjs.map +0 -7
  357. package/dist/lib/node/chunk-HLMCEE5K.cjs +0 -41
  358. package/dist/lib/node/chunk-HLMCEE5K.cjs.map +0 -7
  359. package/dist/lib/node/chunk-IP533AMV.cjs +0 -554
  360. package/dist/lib/node/chunk-IP533AMV.cjs.map +0 -7
  361. package/dist/lib/node/chunk-LR5NENBE.cjs +0 -54
  362. package/dist/lib/node/chunk-LR5NENBE.cjs.map +0 -7
  363. package/dist/lib/node/chunk-UM36TPCT.cjs +0 -984
  364. package/dist/lib/node/chunk-UM36TPCT.cjs.map +0 -7
  365. package/dist/lib/node/chunk-ZGDN3XBR.cjs +0 -149
  366. package/dist/lib/node/chunk-ZGDN3XBR.cjs.map +0 -7
  367. package/dist/lib/node/index.cjs +0 -310
  368. package/dist/lib/node/index.cjs.map +0 -7
  369. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs +0 -363
  370. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs.map +0 -7
  371. package/dist/lib/node/markdown-GQIPJS2F.cjs +0 -178
  372. package/dist/lib/node/markdown-GQIPJS2F.cjs.map +0 -7
  373. package/dist/lib/node/meta.json +0 -1
  374. package/dist/lib/node/react-root-6HHDMULJ.cjs +0 -51
  375. package/dist/lib/node/react-root-6HHDMULJ.cjs.map +0 -7
  376. package/dist/lib/node/react-surface-NBH42NN2.cjs +0 -122
  377. package/dist/lib/node/react-surface-NBH42NN2.cjs.map +0 -7
  378. package/dist/lib/node/settings-4LQSFEDK.cjs +0 -36
  379. package/dist/lib/node/settings-4LQSFEDK.cjs.map +0 -7
  380. package/dist/lib/node/state-IY5XX3H2.cjs +0 -50
  381. package/dist/lib/node/state-IY5XX3H2.cjs.map +0 -7
  382. package/dist/lib/node/types/index.cjs +0 -38
  383. package/dist/lib/node/types/index.cjs.map +0 -7
  384. package/dist/lib/node-esm/ChannelContainer-O4QJII2P.mjs +0 -16
  385. package/dist/lib/node-esm/ChatContainer-F6CSADV7.mjs +0 -15
  386. package/dist/lib/node-esm/app-graph-builder-BAHBHYWI.mjs +0 -172
  387. package/dist/lib/node-esm/app-graph-builder-BAHBHYWI.mjs.map +0 -7
  388. package/dist/lib/node-esm/call-manager-UUYXLF4T.mjs +0 -24
  389. package/dist/lib/node-esm/call-manager-UUYXLF4T.mjs.map +0 -7
  390. package/dist/lib/node-esm/chunk-2RNIPFDA.mjs +0 -984
  391. package/dist/lib/node-esm/chunk-2RNIPFDA.mjs.map +0 -7
  392. package/dist/lib/node-esm/chunk-ESQC6SYE.mjs +0 -19
  393. package/dist/lib/node-esm/chunk-ESQC6SYE.mjs.map +0 -7
  394. package/dist/lib/node-esm/chunk-K4KAUOKT.mjs +0 -19
  395. package/dist/lib/node-esm/chunk-K4KAUOKT.mjs.map +0 -7
  396. package/dist/lib/node-esm/chunk-O3V45YJP.mjs +0 -90
  397. package/dist/lib/node-esm/chunk-O3V45YJP.mjs.map +0 -7
  398. package/dist/lib/node-esm/chunk-O63QJPQX.mjs +0 -23
  399. package/dist/lib/node-esm/chunk-O63QJPQX.mjs.map +0 -7
  400. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs +0 -352
  401. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs.map +0 -7
  402. package/dist/lib/node-esm/chunk-PGRP3O4O.mjs.map +0 -7
  403. package/dist/lib/node-esm/chunk-UJMPYKT3.mjs +0 -129
  404. package/dist/lib/node-esm/chunk-UJMPYKT3.mjs.map +0 -7
  405. package/dist/lib/node-esm/chunk-UZWVVFT3.mjs +0 -551
  406. package/dist/lib/node-esm/chunk-UZWVVFT3.mjs.map +0 -7
  407. package/dist/lib/node-esm/chunk-WXNPD542.mjs.map +0 -7
  408. package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs +0 -354
  409. package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs.map +0 -7
  410. package/dist/lib/node-esm/markdown-HJUWNBLS.mjs +0 -170
  411. package/dist/lib/node-esm/markdown-HJUWNBLS.mjs.map +0 -7
  412. package/dist/lib/node-esm/react-root-RUXOAQNW.mjs +0 -28
  413. package/dist/lib/node-esm/react-root-RUXOAQNW.mjs.map +0 -7
  414. package/dist/lib/node-esm/react-surface-ELXFYKP6.mjs +0 -109
  415. package/dist/lib/node-esm/react-surface-ELXFYKP6.mjs.map +0 -7
  416. package/dist/lib/node-esm/settings-EA7DFSM6.mjs +0 -23
  417. package/dist/lib/node-esm/settings-EA7DFSM6.mjs.map +0 -7
  418. package/dist/lib/node-esm/state-6AUTNROZ.mjs +0 -35
  419. package/dist/lib/node-esm/state-6AUTNROZ.mjs.map +0 -7
  420. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  421. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  422. package/dist/types/src/capabilities/call-manager.d.ts +0 -5
  423. package/dist/types/src/capabilities/call-manager.d.ts.map +0 -1
  424. package/dist/types/src/capabilities/capabilities.d.ts +0 -27
  425. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  426. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  427. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  428. package/dist/types/src/capabilities/markdown.d.ts +0 -4
  429. package/dist/types/src/capabilities/markdown.d.ts.map +0 -1
  430. package/dist/types/src/capabilities/react-root.d.ts +0 -7
  431. package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
  432. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  433. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  434. package/dist/types/src/capabilities/settings.d.ts +0 -4
  435. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  436. package/dist/types/src/capabilities/state.d.ts +0 -7
  437. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  438. package/dist/types/src/components/CommentContainer.d.ts +0 -13
  439. package/dist/types/src/components/CommentContainer.d.ts.map +0 -1
  440. package/dist/types/src/components/ThreadComplementary.d.ts +0 -5
  441. package/dist/types/src/components/ThreadComplementary.d.ts.map +0 -1
  442. package/dist/types/src/peers.stories.d.ts +0 -11
  443. package/dist/types/src/peers.stories.d.ts.map +0 -1
  444. package/dist/types/src/types/schema.d.ts +0 -133
  445. package/dist/types/src/types/schema.d.ts.map +0 -1
  446. package/src/capabilities/app-graph-builder.ts +0 -180
  447. package/src/capabilities/call-manager.ts +0 -19
  448. package/src/capabilities/capabilities.ts +0 -33
  449. package/src/capabilities/intent-resolver.ts +0 -296
  450. package/src/capabilities/markdown.ts +0 -68
  451. package/src/capabilities/react-root.tsx +0 -17
  452. package/src/capabilities/react-surface.tsx +0 -88
  453. package/src/capabilities/settings.ts +0 -19
  454. package/src/capabilities/state.ts +0 -25
  455. package/src/components/CommentContainer.tsx +0 -198
  456. package/src/components/ThreadComplementary.tsx +0 -151
  457. package/src/peers.stories.tsx +0 -189
  458. package/src/types/schema.ts +0 -33
  459. /package/dist/lib/browser/{ChannelContainer-PKFBVENP.mjs.map → blueprints/index.mjs.map} +0 -0
  460. /package/dist/lib/browser/{ChatContainer-RSOKYAMK.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  461. /package/dist/lib/node-esm/{ChannelContainer-O4QJII2P.mjs.map → blueprints/index.mjs.map} +0 -0
  462. /package/dist/lib/node-esm/{ChatContainer-F6CSADV7.mjs.map → chunk-HSLMI22Q.mjs.map} +0 -0
@@ -1,8 +1,14 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ createBlackCanvasStreamTrack,
4
+ createInaudibleAudioStreamTrack
5
+ } from "./chunk-VBI32FGI.mjs";
2
6
 
3
- // packages/plugins/plugin-thread/src/calls/types.ts
7
+ // src/calls/types.ts
8
+ import { invariant } from "@dxos/invariant";
4
9
  import { buf } from "@dxos/protocols/buf";
5
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";
6
12
  var CALLS_URL = "https://calls-service.dxos.workers.dev";
7
13
  var codec = {
8
14
  encode: (message) => {
@@ -14,24 +20,52 @@ var codec = {
14
20
  };
15
21
  var TrackNameCodec = {
16
22
  encode: (trackData) => {
17
- 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;
18
51
  },
19
52
  decode: (name) => {
20
- const [sessionId, trackName] = name.split("/");
53
+ const [sessionId, trackName, mid] = name.split("/");
21
54
  return {
22
55
  sessionId,
23
56
  trackName,
24
- location: "remote"
57
+ location: "remote",
58
+ mid
25
59
  };
26
60
  }
27
61
  };
28
62
 
29
- // packages/plugins/plugin-thread/src/calls/call-swarm-synchronizer.ts
63
+ // src/calls/call-swarm-synchronizer.ts
30
64
  import md5Hex from "md5-hex";
31
65
  import { DeferredTask, Event, scheduleTaskInterval, synchronized } from "@dxos/async";
32
66
  import { Context, Resource } from "@dxos/context";
33
67
  import { generateName } from "@dxos/display-name";
34
- import { invariant } from "@dxos/invariant";
68
+ import { invariant as invariant2 } from "@dxos/invariant";
35
69
  import { PublicKey } from "@dxos/keys";
36
70
  import { log } from "@dxos/log";
37
71
  import { buf as buf2 } from "@dxos/protocols/buf";
@@ -44,22 +78,23 @@ function _ts_decorate(decorators, target, key, desc) {
44
78
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
45
79
  return c > 3 && r && Object.defineProperty(target, key, r), r;
46
80
  }
47
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-swarm-synchronizer.ts";
81
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-swarm-synchronizer.ts";
48
82
  var DISCONNECTED_ABRUPT_TIMEOUT = 1e4;
49
83
  var CallSwarmSynchronizer = class extends Resource {
84
+ stateUpdated = new Event();
85
+ _state = {
86
+ activities: {}
87
+ };
88
+ _networkService;
89
+ _lastSwarmEvent = void 0;
90
+ _reconcileSwarmStateTask = void 0;
91
+ _identityKey = void 0;
92
+ _deviceKey = void 0;
93
+ _displayName = void 0;
94
+ _swarmCtx = void 0;
95
+ _sendStateTask = void 0;
50
96
  constructor({ networkService }) {
51
97
  super();
52
- this.stateUpdated = new Event();
53
- this._state = {
54
- activities: {}
55
- };
56
- this._lastSwarmEvent = void 0;
57
- this._reconcileSwarmStateTask = void 0;
58
- this._identityKey = void 0;
59
- this._deviceKey = void 0;
60
- this._displayName = void 0;
61
- this._swarmCtx = void 0;
62
- this._sendStateTask = void 0;
63
98
  this._networkService = networkService;
64
99
  }
65
100
  /**
@@ -127,7 +162,7 @@ var CallSwarmSynchronizer = class extends Resource {
127
162
  log.verbose("joined to a different room", {
128
163
  roomId
129
164
  }, {
130
- F: __dxlog_file,
165
+ F: __dxlog_file2,
131
166
  L: 152,
132
167
  S: this,
133
168
  C: (f, a) => f(...a)
@@ -149,8 +184,8 @@ var CallSwarmSynchronizer = class extends Resource {
149
184
  this._reconcileSwarmStateTask = void 0;
150
185
  }
151
186
  async join() {
152
- invariant(this._state.roomId, void 0, {
153
- F: __dxlog_file,
187
+ invariant2(this._state.roomId, void 0, {
188
+ F: __dxlog_file2,
154
189
  L: 176,
155
190
  S: this,
156
191
  A: [
@@ -158,8 +193,8 @@ var CallSwarmSynchronizer = class extends Resource {
158
193
  ""
159
194
  ]
160
195
  });
161
- invariant(!this._swarmCtx, "Already joined", {
162
- F: __dxlog_file,
196
+ invariant2(!this._swarmCtx, "Already joined", {
197
+ F: __dxlog_file2,
163
198
  L: 177,
164
199
  S: this,
165
200
  A: [
@@ -168,7 +203,7 @@ var CallSwarmSynchronizer = class extends Resource {
168
203
  ]
169
204
  });
170
205
  this._swarmCtx = new Context(void 0, {
171
- F: __dxlog_file,
206
+ F: __dxlog_file2,
172
207
  L: 179
173
208
  });
174
209
  const topic = getTopic(this._state.roomId);
@@ -179,7 +214,7 @@ var CallSwarmSynchronizer = class extends Resource {
179
214
  peerKey: this._deviceKey
180
215
  }
181
216
  }, {
182
- F: __dxlog_file,
217
+ F: __dxlog_file2,
183
218
  L: 181,
184
219
  S: this,
185
220
  C: (f, a) => f(...a)
@@ -198,7 +233,7 @@ var CallSwarmSynchronizer = class extends Resource {
198
233
  peerKey: this._deviceKey
199
234
  }
200
235
  }, {
201
- F: __dxlog_file,
236
+ F: __dxlog_file2,
202
237
  L: 188,
203
238
  S: this,
204
239
  C: (f, a) => f(...a)
@@ -210,7 +245,7 @@ var CallSwarmSynchronizer = class extends Resource {
210
245
  peerKey: this._deviceKey
211
246
  }
212
247
  }).catch((err) => log.catch(err, void 0, {
213
- F: __dxlog_file,
248
+ F: __dxlog_file2,
214
249
  L: 194,
215
250
  S: this,
216
251
  C: (f, a) => f(...a)
@@ -278,8 +313,8 @@ var CallSwarmSynchronizer = class extends Resource {
278
313
  }
279
314
  async _reconcileSwarmState() {
280
315
  const swarmEvent = this._lastSwarmEvent;
281
- invariant(swarmEvent, void 0, {
282
- F: __dxlog_file,
316
+ invariant2(swarmEvent, void 0, {
317
+ F: __dxlog_file2,
283
318
  L: 273,
284
319
  S: this,
285
320
  A: [
@@ -299,7 +334,7 @@ var CallSwarmSynchronizer = class extends Resource {
299
334
  error,
300
335
  peer
301
336
  }, {
302
- F: __dxlog_file,
337
+ F: __dxlog_file2,
303
338
  L: 290,
304
339
  S: this,
305
340
  C: (f, a) => f(...a)
@@ -312,7 +347,7 @@ var CallSwarmSynchronizer = class extends Resource {
312
347
  log("reconciling swarm state", {
313
348
  users
314
349
  }, {
315
- F: __dxlog_file,
350
+ F: __dxlog_file2,
316
351
  L: 297,
317
352
  S: this,
318
353
  C: (f, a) => f(...a)
@@ -357,7 +392,7 @@ var LamportTimestampCrdt = class {
357
392
  };
358
393
  var getTopic = (roomId) => PublicKey.fromHex(md5Hex(roomId));
359
394
 
360
- // packages/plugins/plugin-thread/src/calls/util/audio.ts
395
+ // src/calls/util/audio.ts
361
396
  var monitorAudioLevel = ({ mediaStreamTrack, intervalMs = 1e3 / 10, onMeasure }) => {
362
397
  let timeout = -1;
363
398
  let interval = -1;
@@ -399,14 +434,16 @@ var monitorAudioLevel = ({ mediaStreamTrack, intervalMs = 1e3 / 10, onMeasure })
399
434
  };
400
435
  };
401
436
 
402
- // packages/plugins/plugin-thread/src/calls/util/calls-service.ts
403
- import { PersistentLifecycle } from "@dxos/async";
437
+ // src/calls/util/calls-service.ts
438
+ import { PersistentLifecycle, Trigger, scheduleTask } from "@dxos/async";
404
439
  import { Resource as Resource2 } from "@dxos/context";
405
- import { invariant as invariant2 } from "@dxos/invariant";
440
+ import { invariant as invariant3 } from "@dxos/invariant";
406
441
  import { log as log2 } from "@dxos/log";
407
442
 
408
- // packages/plugins/plugin-thread/src/calls/util/history-cache.ts
443
+ // src/calls/util/history-cache.ts
409
444
  var HistoryCache = class {
445
+ _limit;
446
+ _messages;
410
447
  constructor(limit = 100) {
411
448
  this._limit = limit;
412
449
  this._messages = [];
@@ -422,7 +459,7 @@ var HistoryCache = class {
422
459
  }
423
460
  };
424
461
 
425
- // packages/plugins/plugin-thread/src/calls/util/task-scheduling.ts
462
+ // src/calls/util/task-scheduling.ts
426
463
  var DefaultBatchSizeLimit = 64;
427
464
  var FIFOScheduler = class {
428
465
  #schedulerChain;
@@ -479,21 +516,22 @@ var BulkRequestDispatcher = class {
479
516
  }
480
517
  };
481
518
 
482
- // packages/plugins/plugin-thread/src/calls/util/calls-service.ts
483
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/calls-service.ts";
519
+ // src/calls/util/calls-service.ts
520
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/calls-service.ts";
484
521
  var NETWORK_TIMEOUT = 5e3;
485
522
  var CallsServicePeer = class extends Resource2 {
523
+ history = new HistoryCache(100);
524
+ _persistentLifecycle = new PersistentLifecycle({
525
+ start: () => this._startSession(),
526
+ stop: (session) => this._stopSession(session)
527
+ });
528
+ _config;
529
+ taskScheduler = new FIFOScheduler();
530
+ pushTrackDispatcher = new BulkRequestDispatcher(32);
531
+ pullTrackDispatcher = new BulkRequestDispatcher(32);
532
+ closeTrackDispatcher = new BulkRequestDispatcher(32);
486
533
  constructor(config) {
487
534
  super();
488
- this.history = new HistoryCache(100);
489
- this._persistentLifecycle = new PersistentLifecycle({
490
- start: () => this._startSession(),
491
- stop: (session) => this._stopSession(session)
492
- });
493
- this.taskScheduler = new FIFOScheduler();
494
- this.pushTrackDispatcher = new BulkRequestDispatcher(32);
495
- this.pullTrackDispatcher = new BulkRequestDispatcher(32);
496
- this.closeTrackDispatcher = new BulkRequestDispatcher(32);
497
535
  this._config = config;
498
536
  }
499
537
  async _open(ctx) {
@@ -523,11 +561,11 @@ var CallsServicePeer = class extends Resource2 {
523
561
  });
524
562
  peerConnection.addEventListener("connectionstatechange", () => {
525
563
  if (peerConnection.connectionState === "failed" || peerConnection.connectionState === "closed") {
526
- log2.warn("calls connection failed", {
564
+ log2.info("calls connection failed", {
527
565
  state: peerConnection.connectionState
528
566
  }, {
529
- F: __dxlog_file2,
530
- L: 115,
567
+ F: __dxlog_file3,
568
+ L: 121,
531
569
  S: this,
532
570
  C: (f, a) => f(...a)
533
571
  });
@@ -538,11 +576,11 @@ var CallsServicePeer = class extends Resource2 {
538
576
  peerConnection.addEventListener("iceconnectionstatechange", () => {
539
577
  clearTimeout(iceTimeout);
540
578
  if (peerConnection.iceConnectionState === "failed" || peerConnection.iceConnectionState === "closed") {
541
- log2.warn("calls connection to ICEs failed", {
579
+ log2.info("calls connection to ICEs failed", {
542
580
  state: peerConnection.iceConnectionState
543
581
  }, {
544
- F: __dxlog_file2,
545
- L: 124,
582
+ F: __dxlog_file3,
583
+ L: 130,
546
584
  S: this,
547
585
  C: (f, a) => f(...a)
548
586
  });
@@ -552,19 +590,19 @@ var CallsServicePeer = class extends Resource2 {
552
590
  iceTimeout = window.setTimeout(() => {
553
591
  if (peerConnection.iceConnectionState === "connected") {
554
592
  log2.info("calls iceConnectionState is connected", void 0, {
555
- F: __dxlog_file2,
556
- L: 133,
593
+ F: __dxlog_file3,
594
+ L: 139,
557
595
  S: this,
558
596
  C: (f, a) => f(...a)
559
597
  });
560
598
  return;
561
599
  }
562
- log2.warn("calls iceConnectionState timed out", {
600
+ log2.info("calls iceConnectionState timed out", {
563
601
  state: peerConnection.iceConnectionState,
564
602
  timeoutSeconds
565
603
  }, {
566
- F: __dxlog_file2,
567
- L: 137,
604
+ F: __dxlog_file3,
605
+ L: 143,
568
606
  S: this,
569
607
  C: (f, a) => f(...a)
570
608
  });
@@ -576,8 +614,8 @@ var CallsServicePeer = class extends Resource2 {
576
614
  }
577
615
  async _initiateCallSession() {
578
616
  log2("creating new session", void 0, {
579
- F: __dxlog_file2,
580
- L: 147,
617
+ F: __dxlog_file3,
618
+ L: 153,
581
619
  S: this,
582
620
  C: (f, a) => f(...a)
583
621
  });
@@ -588,6 +626,7 @@ var CallsServicePeer = class extends Resource2 {
588
626
  }
589
627
  async _fetch(relativePath, requestInit) {
590
628
  this.history.push({
629
+ endpoint: relativePath,
591
630
  type: "request",
592
631
  time: (/* @__PURE__ */ new Date()).toISOString(),
593
632
  method: requestInit?.method ?? "GET",
@@ -602,8 +641,8 @@ var CallsServicePeer = class extends Resource2 {
602
641
  status: response.status,
603
642
  text: await response.text()
604
643
  }, {
605
- F: __dxlog_file2,
606
- L: 162,
644
+ F: __dxlog_file3,
645
+ L: 169,
607
646
  S: this,
608
647
  C: (f, a) => f(...a)
609
648
  });
@@ -612,6 +651,7 @@ var CallsServicePeer = class extends Resource2 {
612
651
  try {
613
652
  const data = await response.clone().json();
614
653
  this.history.push({
654
+ endpoint: relativePath,
615
655
  type: "response",
616
656
  time: (/* @__PURE__ */ new Date()).toISOString(),
617
657
  status: response.status,
@@ -624,6 +664,7 @@ var CallsServicePeer = class extends Resource2 {
624
664
  } catch (error) {
625
665
  const text = await response.text();
626
666
  this.history.push({
667
+ endpoint: relativePath,
627
668
  type: "response",
628
669
  time: (/* @__PURE__ */ new Date()).toISOString(),
629
670
  status: response.status,
@@ -634,8 +675,8 @@ var CallsServicePeer = class extends Resource2 {
634
675
  text,
635
676
  status: response.status
636
677
  }, {
637
- F: __dxlog_file2,
638
- L: 187,
678
+ F: __dxlog_file3,
679
+ L: 196,
639
680
  S: this,
640
681
  C: (f, a) => f(...a)
641
682
  });
@@ -644,8 +685,8 @@ var CallsServicePeer = class extends Resource2 {
644
685
  }
645
686
  async _pushTrackInBulk({ ctx, peerConnection, transceiver, sessionId, trackName }) {
646
687
  log2.verbose("pushing track ", trackName, {
647
- F: __dxlog_file2,
648
- L: 209,
688
+ F: __dxlog_file3,
689
+ L: 218,
649
690
  S: this,
650
691
  C: (f, a) => f(...a)
651
692
  });
@@ -670,9 +711,9 @@ var CallsServicePeer = class extends Resource2 {
670
711
  }))
671
712
  })
672
713
  });
673
- invariant2(response.tracks !== void 0, void 0, {
674
- F: __dxlog_file2,
675
- L: 234,
714
+ invariant3(response.tracks !== void 0, void 0, {
715
+ F: __dxlog_file3,
716
+ L: 243,
676
717
  S: this,
677
718
  A: [
678
719
  "response.tracks !== undefined",
@@ -686,7 +727,7 @@ var CallsServicePeer = class extends Resource2 {
686
727
  return {
687
728
  tracks: response.tracks
688
729
  };
689
- })).then(({ tracks }) => {
730
+ })).then(async ({ tracks }) => {
690
731
  const trackData = tracks.find((t) => t.mid === transceiver.mid);
691
732
  if (trackData) {
692
733
  return {
@@ -696,19 +737,12 @@ var CallsServicePeer = class extends Resource2 {
696
737
  };
697
738
  } else {
698
739
  log2.error("missing track data", void 0, {
699
- F: __dxlog_file2,
700
- L: 254,
740
+ F: __dxlog_file3,
741
+ L: 267,
701
742
  S: this,
702
743
  C: (f, a) => f(...a)
703
744
  });
704
745
  }
705
- }).catch((err) => {
706
- log2.catch(err, void 0, {
707
- F: __dxlog_file2,
708
- L: 258,
709
- S: this,
710
- C: (f, a) => f(...a)
711
- });
712
746
  });
713
747
  const onDispose = async () => {
714
748
  if (transceiver.mid) {
@@ -721,9 +755,9 @@ var CallsServicePeer = class extends Resource2 {
721
755
  }
722
756
  async pushTrack({ track, encodings = [], ctx, previousTrack }) {
723
757
  await this.waitUntilOpen();
724
- invariant2(this.session, void 0, {
725
- F: __dxlog_file2,
726
- L: 285,
758
+ invariant3(this.session, void 0, {
759
+ F: __dxlog_file3,
760
+ L: 295,
727
761
  S: this,
728
762
  A: [
729
763
  "this.session",
@@ -735,8 +769,8 @@ var CallsServicePeer = class extends Resource2 {
735
769
  previousTrack,
736
770
  encodings
737
771
  }, {
738
- F: __dxlog_file2,
739
- L: 286,
772
+ F: __dxlog_file3,
773
+ L: 296,
740
774
  S: this,
741
775
  C: (f, a) => f(...a)
742
776
  });
@@ -748,8 +782,8 @@ var CallsServicePeer = class extends Resource2 {
748
782
  previousTrack,
749
783
  transceiver: transceiver2
750
784
  }, {
751
- F: __dxlog_file2,
752
- L: 290,
785
+ F: __dxlog_file3,
786
+ L: 300,
753
787
  S: this,
754
788
  C: (f, a) => f(...a)
755
789
  });
@@ -760,23 +794,23 @@ var CallsServicePeer = class extends Resource2 {
760
794
  previousTrack,
761
795
  transceiver: transceiver2
762
796
  }, {
763
- F: __dxlog_file2,
764
- L: 293,
797
+ F: __dxlog_file3,
798
+ L: 303,
765
799
  S: this,
766
800
  C: (f, a) => f(...a)
767
801
  });
768
802
  transceiver2.sender.replaceTrack(track).catch((err) => log2.catch(err, void 0, {
769
- F: __dxlog_file2,
770
- L: 294,
803
+ F: __dxlog_file3,
804
+ L: 304,
771
805
  S: this,
772
806
  C: (f, a) => f(...a)
773
807
  }));
774
808
  return previousTrack;
775
809
  }
776
810
  }
777
- invariant2(track, void 0, {
778
- F: __dxlog_file2,
779
- L: 298,
811
+ invariant3(track, void 0, {
812
+ F: __dxlog_file3,
813
+ L: 308,
780
814
  S: this,
781
815
  A: [
782
816
  "track",
@@ -788,8 +822,8 @@ var CallsServicePeer = class extends Resource2 {
788
822
  direction: "sendonly"
789
823
  });
790
824
  log2.verbose("creating transceiver", void 0, {
791
- F: __dxlog_file2,
792
- L: 303,
825
+ F: __dxlog_file3,
826
+ L: 313,
793
827
  S: this,
794
828
  C: (f, a) => f(...a)
795
829
  });
@@ -800,9 +834,9 @@ var CallsServicePeer = class extends Resource2 {
800
834
  sessionId: this.session.sessionId,
801
835
  trackName: stableId
802
836
  });
803
- invariant2(pushedTrackData, void 0, {
804
- F: __dxlog_file2,
805
- L: 312,
837
+ invariant3(pushedTrackData, void 0, {
838
+ F: __dxlog_file3,
839
+ L: 322,
806
840
  S: this,
807
841
  A: [
808
842
  "pushedTrackData",
@@ -818,8 +852,8 @@ var CallsServicePeer = class extends Resource2 {
818
852
  };
819
853
  });
820
854
  transceiver.sender.setParameters(parameters).catch((err) => log2.catch(err, void 0, {
821
- F: __dxlog_file2,
822
- L: 319,
855
+ F: __dxlog_file3,
856
+ L: 329,
823
857
  S: this,
824
858
  C: (f, a) => f(...a)
825
859
  }));
@@ -831,8 +865,8 @@ var CallsServicePeer = class extends Resource2 {
831
865
  log2("pulling track", {
832
866
  trackName: trackData.trackName
833
867
  }, {
834
- F: __dxlog_file2,
835
- L: 337,
868
+ F: __dxlog_file3,
869
+ L: 347,
836
870
  S: this,
837
871
  C: (f, a) => f(...a)
838
872
  });
@@ -846,9 +880,9 @@ var CallsServicePeer = class extends Resource2 {
846
880
  if (newTrackResponse.errorCode) {
847
881
  throw new Error(newTrackResponse.errorDescription);
848
882
  }
849
- invariant2(newTrackResponse.tracks, void 0, {
850
- F: __dxlog_file2,
851
- L: 350,
883
+ invariant3(newTrackResponse.tracks, void 0, {
884
+ F: __dxlog_file3,
885
+ L: 360,
852
886
  S: this,
853
887
  A: [
854
888
  "newTrackResponse.tracks",
@@ -858,7 +892,7 @@ var CallsServicePeer = class extends Resource2 {
858
892
  const trackMap = tracks.reduce((acc, track) => {
859
893
  const pulledTrackData = newTrackResponse.tracks?.find((t) => t.trackName === track.trackName && t.sessionId === track.sessionId);
860
894
  if (pulledTrackData && pulledTrackData.mid) {
861
- acc.set(track, {
895
+ acc.set(track.trackName, {
862
896
  mid: pulledTrackData.mid,
863
897
  resolvedTrack: resolveTrack(peerConnection, (t) => t.mid === pulledTrackData.mid)
864
898
  });
@@ -888,21 +922,24 @@ var CallsServicePeer = class extends Resource2 {
888
922
  trackMap
889
923
  };
890
924
  })).then(({ trackMap }) => {
891
- const trackInfo = trackMap.get(trackData);
925
+ const trackInfo = trackMap.get(trackData.trackName);
892
926
  if (trackInfo) {
893
927
  return trackInfo.resolvedTrack.then((track) => {
894
928
  mid = trackInfo.mid;
895
929
  return track;
896
930
  }).catch((err) => log2.catch(err, void 0, {
897
- F: __dxlog_file2,
898
- L: 402,
931
+ F: __dxlog_file3,
932
+ L: 412,
899
933
  S: this,
900
934
  C: (f, a) => f(...a)
901
935
  }));
902
936
  } else {
903
- log2.error("missing track info", void 0, {
904
- F: __dxlog_file2,
905
- L: 404,
937
+ log2.info("missing track info", {
938
+ trackData,
939
+ availableTracks: Array.from(trackMap.keys())
940
+ }, {
941
+ F: __dxlog_file3,
942
+ L: 414,
906
943
  S: this,
907
944
  C: (f, a) => f(...a)
908
945
  });
@@ -911,8 +948,8 @@ var CallsServicePeer = class extends Resource2 {
911
948
  const onDispose = async () => {
912
949
  if (mid) {
913
950
  log2("closing pulled track ", trackData.trackName, {
914
- F: __dxlog_file2,
915
- L: 410,
951
+ F: __dxlog_file3,
952
+ L: 420,
916
953
  S: this,
917
954
  C: (f, a) => f(...a)
918
955
  });
@@ -926,9 +963,9 @@ var CallsServicePeer = class extends Resource2 {
926
963
  }
927
964
  async pullTrack({ ctx, trackData }) {
928
965
  await this.waitUntilOpen();
929
- invariant2(this.session, void 0, {
930
- F: __dxlog_file2,
931
- L: 431,
966
+ invariant3(this.session, void 0, {
967
+ F: __dxlog_file3,
968
+ L: 441,
932
969
  S: this,
933
970
  A: [
934
971
  "this.session",
@@ -1012,9 +1049,9 @@ var peerConnectionIsConnected = async (peerConnection) => {
1012
1049
  }
1013
1050
  };
1014
1051
 
1015
- // packages/plugins/plugin-thread/src/calls/util/media.ts
1052
+ // src/calls/util/media.ts
1016
1053
  import { log as log3 } from "@dxos/log";
1017
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/media.ts";
1054
+ var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/media.ts";
1018
1055
  var getUserMediaTrack = async (kind, constraints = {}, deviceList) => {
1019
1056
  deviceList ??= (await getDeviceList()).filter((device) => device.kind === kind);
1020
1057
  const firstDevice = deviceList[0];
@@ -1026,7 +1063,7 @@ var getUserMediaTrack = async (kind, constraints = {}, deviceList) => {
1026
1063
  var acquireTrack = async (device, constraints) => {
1027
1064
  const { deviceId, label } = device;
1028
1065
  log3.info(`requesting ${label}`, void 0, {
1029
- F: __dxlog_file3,
1066
+ F: __dxlog_file4,
1030
1067
  L: 23,
1031
1068
  S: void 0,
1032
1069
  C: (f, a) => f(...a)
@@ -1068,58 +1105,7 @@ var getScreenshare = async ({ contentHint }) => {
1068
1105
  return ms;
1069
1106
  };
1070
1107
 
1071
- // packages/plugins/plugin-thread/src/calls/util/stub-media-streams.ts
1072
- import { waitForCondition, scheduleTaskInterval as scheduleTaskInterval2 } from "@dxos/async";
1073
- import { cancelWithContext } from "@dxos/context";
1074
- import { invariant as invariant3 } from "@dxos/invariant";
1075
- var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/stub-media-streams.ts";
1076
- var createBlackCanvasStreamTrack = async ({ ctx, width, height }) => {
1077
- const canvas = document.createElement("canvas");
1078
- canvas.width = width;
1079
- canvas.height = height;
1080
- const canvasCtx = canvas.getContext("2d");
1081
- invariant3(canvasCtx, void 0, {
1082
- F: __dxlog_file4,
1083
- L: 28,
1084
- S: void 0,
1085
- A: [
1086
- "canvasCtx",
1087
- ""
1088
- ]
1089
- });
1090
- const drawFrame = () => {
1091
- canvasCtx.fillStyle = "black";
1092
- canvasCtx.fillRect(0, 0, canvas.width, canvas.height);
1093
- };
1094
- scheduleTaskInterval2(ctx, async () => drawFrame(), 1e3);
1095
- const track = canvas.captureStream().getVideoTracks()[0];
1096
- drawFrame();
1097
- await cancelWithContext(ctx, waitForCondition({
1098
- condition: () => track.readyState === "live",
1099
- timeout: 1e3
1100
- }));
1101
- return track;
1102
- };
1103
- var createInaudibleAudioStreamTrack = async ({ ctx }) => {
1104
- const audioContext = new window.AudioContext();
1105
- const oscillator = audioContext.createOscillator();
1106
- oscillator.type = "triangle";
1107
- oscillator.frequency.setValueAtTime(0.1, audioContext.currentTime);
1108
- const gainNode = audioContext.createGain();
1109
- gainNode.gain.setValueAtTime(0, audioContext.currentTime);
1110
- oscillator.connect(gainNode);
1111
- const destination = audioContext.createMediaStreamDestination();
1112
- gainNode.connect(destination);
1113
- oscillator.start();
1114
- ctx.onDispose(async () => {
1115
- oscillator.disconnect();
1116
- oscillator.stop();
1117
- await audioContext.close();
1118
- });
1119
- return destination.stream.getAudioTracks()[0];
1120
- };
1121
-
1122
- // packages/plugins/plugin-thread/src/calls/speaking-monitor.ts
1108
+ // src/calls/speaking-monitor.ts
1123
1109
  import { DeferredTask as DeferredTask2, Event as Event2, sleep } from "@dxos/async";
1124
1110
  import { Resource as Resource3 } from "@dxos/context";
1125
1111
  var NOT_SPEAKING_AFTER = 500;
@@ -1127,8 +1113,20 @@ var START_SPEAKING_THRESHOLD = 0.05;
1127
1113
  var CONTINUE_SPEAKING_THRESHOLD = 0.02;
1128
1114
  var MIN_EVENT_INTERVAL = 100;
1129
1115
  var SpeakingMonitor = class extends Resource3 {
1116
+ _mediaStreamTrack;
1117
+ /**
1118
+ * Event that is emitted when the user starts or stops speaking.
1119
+ * It is debounced to prevent rapid state changes.
1120
+ */
1121
+ speakingChanged = new Event2();
1122
+ /**
1123
+ * Real state of the user speaking.
1124
+ */
1125
+ _isSpeaking = false;
1126
+ _lastEventTime = 0;
1127
+ _deferredUpdate;
1130
1128
  constructor(_mediaStreamTrack) {
1131
- super(), this._mediaStreamTrack = _mediaStreamTrack, this.speakingChanged = new Event2(), this._isSpeaking = false, this._lastEventTime = 0;
1129
+ super(), this._mediaStreamTrack = _mediaStreamTrack;
1132
1130
  }
1133
1131
  get isSpeaking() {
1134
1132
  return this._isSpeaking;
@@ -1175,9 +1173,10 @@ var SpeakingMonitor = class extends Resource3 {
1175
1173
  }
1176
1174
  };
1177
1175
 
1178
- // packages/plugins/plugin-thread/src/calls/media-manager.ts
1176
+ // src/calls/media-manager.ts
1179
1177
  import { DeferredTask as DeferredTask3, Event as Event3, sleep as sleep2, synchronized as synchronized2 } from "@dxos/async";
1180
- import { cancelWithContext as cancelWithContext2, Resource as Resource4 } from "@dxos/context";
1178
+ import { Resource as Resource4, cancelWithContext } from "@dxos/context";
1179
+ import { invariant as invariant4 } from "@dxos/invariant";
1181
1180
  import { log as log4 } from "@dxos/log";
1182
1181
  function _ts_decorate2(decorators, target, key, desc) {
1183
1182
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1185,27 +1184,25 @@ function _ts_decorate2(decorators, target, key, desc) {
1185
1184
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1186
1185
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1187
1186
  }
1188
- var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/calls/media-manager.ts";
1187
+ var __dxlog_file5 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/media-manager.ts";
1189
1188
  var VIDEO_WIDTH = 1280;
1190
1189
  var VIDEO_HEIGHT = 720;
1191
1190
  var MAX_WEB_CAM_FRAMERATE = 24;
1192
1191
  var MAX_WEB_CAM_BITRATE = 12e5;
1193
- var RETRY_INTERVAL = 500;
1192
+ var RETRY_INTERVAL = 100;
1193
+ var USE_INAUDIBLE_AUDIO = true;
1194
1194
  var MediaManager = class extends Resource4 {
1195
- constructor() {
1196
- super(...arguments);
1197
- this.stateUpdated = new Event3();
1198
- this._state = {
1199
- pulledVideoStreams: {},
1200
- pulledAudioTracks: {}
1201
- };
1202
- this._speakingMonitor = void 0;
1203
- this._trackToReconcile = [];
1204
- this._blackCanvasStreamTrack = void 0;
1205
- this._inaudibleAudioStreamTrack = void 0;
1206
- this._pushTracksTask = void 0;
1207
- this._pullTracksTask = void 0;
1208
- }
1195
+ stateUpdated = new Event3();
1196
+ _state = {
1197
+ pulledVideoStreams: {},
1198
+ pulledAudioTracks: {}
1199
+ };
1200
+ _speakingMonitor = void 0;
1201
+ _trackToReconcile = [];
1202
+ _blackCanvasStreamTrack = void 0;
1203
+ _inaudibleAudioStreamTrack = void 0;
1204
+ _pushTracksTask = void 0;
1205
+ _pullTracksTask = void 0;
1209
1206
  get isSpeaking() {
1210
1207
  return this._speakingMonitor?.isSpeaking;
1211
1208
  }
@@ -1224,10 +1221,12 @@ var MediaManager = class extends Resource4 {
1224
1221
  this._state.videoTrack = this._blackCanvasStreamTrack;
1225
1222
  this._state.videoStream = new MediaStream();
1226
1223
  this._state.videoStream.addTrack(this._state.videoTrack);
1227
- this._inaudibleAudioStreamTrack = await createInaudibleAudioStreamTrack({
1228
- ctx: this._ctx
1229
- });
1230
- this._state.audioTrack = this._inaudibleAudioStreamTrack;
1224
+ if (USE_INAUDIBLE_AUDIO) {
1225
+ this._inaudibleAudioStreamTrack = await createInaudibleAudioStreamTrack({
1226
+ ctx: this._ctx
1227
+ });
1228
+ this._state.audioTrack = this._inaudibleAudioStreamTrack;
1229
+ }
1231
1230
  this._pushTracksTask = new DeferredTask3(this._ctx, async () => {
1232
1231
  await this._pushTracks();
1233
1232
  });
@@ -1302,11 +1301,14 @@ var MediaManager = class extends Resource4 {
1302
1301
  async turnAudioOff() {
1303
1302
  void this._speakingMonitor?.close();
1304
1303
  this._speakingMonitor = void 0;
1305
- if (this._state.audioTrack !== this._inaudibleAudioStreamTrack) {
1304
+ this._state.audioEnabled = false;
1305
+ if (USE_INAUDIBLE_AUDIO && this._state.audioTrack !== this._inaudibleAudioStreamTrack) {
1306
1306
  this._state.audioTrack?.stop();
1307
1307
  this._state.audioTrack = this._inaudibleAudioStreamTrack;
1308
+ } else {
1309
+ this._state.audioTrack?.stop();
1310
+ this._state.audioTrack = void 0;
1308
1311
  }
1309
- this._state.audioEnabled = false;
1310
1312
  this.stateUpdated.emit(this._state);
1311
1313
  this._pushTracksTask.schedule();
1312
1314
  }
@@ -1340,11 +1342,11 @@ var MediaManager = class extends Resource4 {
1340
1342
  async _reconcilePulledMedia() {
1341
1343
  log4("reconciling tracks", void 0, {
1342
1344
  F: __dxlog_file5,
1343
- L: 215,
1345
+ L: 229,
1344
1346
  S: this,
1345
1347
  C: (f, a) => f(...a)
1346
1348
  });
1347
- await cancelWithContext2(this._ctx, sleep2(800));
1349
+ await cancelWithContext(this._ctx, sleep2(800));
1348
1350
  const trackNames = this._trackToReconcile;
1349
1351
  const tracksToPull = trackNames.filter((name) => !this._state.pulledAudioTracks[name] && !this._state.pulledVideoStreams[name]);
1350
1352
  const audioTracksToClose = Object.entries(this._state.pulledAudioTracks).filter(([key]) => !trackNames.some((name) => name === key));
@@ -1358,11 +1360,11 @@ var MediaManager = class extends Resource4 {
1358
1360
  currentVideoStreams: Object.keys(this._state.pulledVideoStreams)
1359
1361
  }, {
1360
1362
  F: __dxlog_file5,
1361
- L: 234,
1363
+ L: 247,
1362
1364
  S: this,
1363
1365
  C: (f, a) => f(...a)
1364
1366
  });
1365
- await Promise.all(tracksToPull.map((name) => this._pullTrack(name)));
1367
+ const pullResults = await Promise.all(tracksToPull.map((name) => this._pullTrack(name)));
1366
1368
  await Promise.all([
1367
1369
  ...audioTracksToClose,
1368
1370
  ...videoStreamsToClose
@@ -1372,54 +1374,101 @@ var MediaManager = class extends Resource4 {
1372
1374
  currentVideoStreams: Object.keys(this._state.pulledVideoStreams)
1373
1375
  }, {
1374
1376
  F: __dxlog_file5,
1375
- L: 249,
1377
+ L: 262,
1376
1378
  S: this,
1377
1379
  C: (f, a) => f(...a)
1378
1380
  });
1379
1381
  this.stateUpdated.emit(this._state);
1382
+ if (pullResults.some(({ shouldRetry }) => shouldRetry)) {
1383
+ await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
1384
+ log4.info("retrying pull tracks", {
1385
+ tracksToPull
1386
+ }, {
1387
+ F: __dxlog_file5,
1388
+ L: 270,
1389
+ S: this,
1390
+ C: (f, a) => f(...a)
1391
+ });
1392
+ invariant4(this._pullTracksTask, void 0, {
1393
+ F: __dxlog_file5,
1394
+ L: 271,
1395
+ S: this,
1396
+ A: [
1397
+ "this._pullTracksTask",
1398
+ ""
1399
+ ]
1400
+ });
1401
+ this._pullTracksTask.schedule();
1402
+ }
1380
1403
  }
1381
1404
  async _pushTracks() {
1382
1405
  if (!this._state.peer?.isOpen) {
1383
1406
  return;
1384
1407
  }
1385
1408
  let updated = false;
1386
- const [pushedVideoTrack, pushedAudioTrack, pushedScreenshareTrack] = await Promise.all([
1387
- this._pushTrack(this._state.videoTrack, this._state.pushedVideoTrack, [
1409
+ const [pushVideoResult, pushAudioResult, pushScreenshareResult] = await Promise.all([
1410
+ this._maybePushTrack(this._state.videoTrack, this._state.pushedVideoTrack, [
1388
1411
  {
1389
1412
  maxFramerate: MAX_WEB_CAM_FRAMERATE,
1390
1413
  maxBitrate: MAX_WEB_CAM_BITRATE
1391
1414
  }
1392
1415
  ]),
1393
- this._pushTrack(this._state.audioTrack, this._state.pushedAudioTrack, [
1416
+ this._maybePushTrack(this._state.audioTrack, this._state.pushedAudioTrack, [
1394
1417
  {
1395
1418
  networkPriority: "high"
1396
1419
  }
1397
1420
  ]),
1398
- this._pushTrack(this._state.screenshareTrack, this._state.pushedScreenshareTrack)
1421
+ this._maybePushTrack(this._state.screenshareTrack, this._state.pushedScreenshareTrack)
1399
1422
  ]);
1400
- if (pushedVideoTrack !== this._state.pushedVideoTrack) {
1401
- this._state.pushedVideoTrack = pushedVideoTrack;
1423
+ if (pushVideoResult.track !== this._state.pushedVideoTrack) {
1424
+ this._state.pushedVideoTrack = pushVideoResult.track;
1402
1425
  updated = true;
1403
1426
  }
1404
- if (pushedAudioTrack !== this._state.pushedAudioTrack) {
1405
- this._state.pushedAudioTrack = pushedAudioTrack;
1427
+ if (pushAudioResult.track !== this._state.pushedAudioTrack) {
1428
+ this._state.pushedAudioTrack = pushAudioResult.track;
1406
1429
  updated = true;
1407
1430
  }
1408
- if (pushedScreenshareTrack !== this._state.pushedScreenshareTrack) {
1409
- this._state.pushedScreenshareTrack = pushedScreenshareTrack;
1431
+ if (pushScreenshareResult.track !== this._state.pushedScreenshareTrack) {
1432
+ this._state.pushedScreenshareTrack = pushScreenshareResult.track;
1410
1433
  updated = true;
1411
1434
  }
1412
- if (!updated) {
1413
- return;
1435
+ const shouldRetry = pushVideoResult.shouldRetry || pushAudioResult.shouldRetry || pushScreenshareResult.shouldRetry;
1436
+ if (updated) {
1437
+ this.stateUpdated.emit(this._state);
1438
+ }
1439
+ if (shouldRetry) {
1440
+ await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
1441
+ log4.info("retrying push tracks", {
1442
+ pushVideoResult,
1443
+ pushAudioResult,
1444
+ pushScreenshareResult
1445
+ }, {
1446
+ F: __dxlog_file5,
1447
+ L: 310,
1448
+ S: this,
1449
+ C: (f, a) => f(...a)
1450
+ });
1451
+ invariant4(this._pushTracksTask, void 0, {
1452
+ F: __dxlog_file5,
1453
+ L: 311,
1454
+ S: this,
1455
+ A: [
1456
+ "this._pushTracksTask",
1457
+ ""
1458
+ ]
1459
+ });
1460
+ this._pushTracksTask.schedule();
1414
1461
  }
1415
- this.stateUpdated.emit(this._state);
1416
1462
  }
1417
1463
  async _pullTrack(name) {
1418
1464
  const ctx = this._ctx.derive();
1419
1465
  try {
1420
1466
  const trackData = TrackNameCodec.decode(name);
1421
1467
  const track = await this._state.peer.pullTrack({
1422
- trackData,
1468
+ trackData: {
1469
+ ...trackData,
1470
+ mid: void 0
1471
+ },
1423
1472
  ctx
1424
1473
  });
1425
1474
  if (track?.readyState === "ended") {
@@ -1432,7 +1481,9 @@ var MediaManager = class extends Resource4 {
1432
1481
  ctx
1433
1482
  };
1434
1483
  ctx.onDispose(() => delete this._state.pulledAudioTracks[name]);
1435
- break;
1484
+ return {
1485
+ shouldRetry: false
1486
+ };
1436
1487
  }
1437
1488
  case "video": {
1438
1489
  const mediaStream = new MediaStream();
@@ -1446,44 +1497,63 @@ var MediaManager = class extends Resource4 {
1446
1497
  track.stop();
1447
1498
  delete this._state.pulledVideoStreams[name];
1448
1499
  });
1449
- break;
1500
+ return {
1501
+ shouldRetry: false
1502
+ };
1450
1503
  }
1451
1504
  default:
1452
1505
  throw new Error(`Invalid track kind: ${track?.kind}`);
1453
1506
  }
1454
1507
  } catch (err) {
1455
- log4.verbose("failed to pull track", {
1508
+ log4.info("failed to pull track", {
1456
1509
  err,
1457
1510
  name
1458
1511
  }, {
1459
1512
  F: __dxlog_file5,
1460
- L: 319,
1513
+ L: 347,
1461
1514
  S: this,
1462
1515
  C: (f, a) => f(...a)
1463
1516
  });
1464
1517
  void ctx.dispose();
1465
- await cancelWithContext2(this._ctx, sleep2(RETRY_INTERVAL));
1466
- log4.verbose("retrying pull track", {
1467
- name
1518
+ return {
1519
+ shouldRetry: true
1520
+ };
1521
+ }
1522
+ }
1523
+ async _maybePushTrack(track, previousTrack, encodings) {
1524
+ if (!track && !previousTrack) {
1525
+ return {
1526
+ track: void 0
1527
+ };
1528
+ }
1529
+ const ctx = this._ctx.derive();
1530
+ try {
1531
+ return {
1532
+ track: await this._state.peer.pushTrack({
1533
+ ctx,
1534
+ track: track ?? null,
1535
+ previousTrack,
1536
+ encodings
1537
+ })
1538
+ };
1539
+ } catch (err) {
1540
+ log4.info("failed to push track", {
1541
+ err,
1542
+ track,
1543
+ previousTrack,
1544
+ encodings
1468
1545
  }, {
1469
1546
  F: __dxlog_file5,
1470
- L: 322,
1547
+ L: 373,
1471
1548
  S: this,
1472
1549
  C: (f, a) => f(...a)
1473
1550
  });
1474
- this._pullTracksTask.schedule();
1551
+ void ctx.dispose();
1552
+ return {
1553
+ shouldRetry: true
1554
+ };
1475
1555
  }
1476
1556
  }
1477
- async _pushTrack(track, previousTrack, encodings) {
1478
- if (!track && !previousTrack) {
1479
- return;
1480
- }
1481
- return this._state.peer.pushTrack({
1482
- track: track ?? null,
1483
- previousTrack,
1484
- encodings
1485
- });
1486
- }
1487
1557
  };
1488
1558
  _ts_decorate2([
1489
1559
  synchronized2
@@ -1492,12 +1562,11 @@ _ts_decorate2([
1492
1562
  synchronized2
1493
1563
  ], MediaManager.prototype, "leave", null);
1494
1564
 
1495
- // packages/plugins/plugin-thread/src/calls/call-manager.ts
1496
- import { computed } from "@preact/signals-core";
1565
+ // src/calls/call-manager.ts
1566
+ import { Atom } from "@effect-atom/atom-react";
1497
1567
  import { Event as Event4, synchronized as synchronized3 } from "@dxos/async";
1498
1568
  import { Resource as Resource5 } from "@dxos/context";
1499
- import { invariant as invariant4 } from "@dxos/invariant";
1500
- import { live } from "@dxos/live-object";
1569
+ import { invariant as invariant5 } from "@dxos/invariant";
1501
1570
  import { isNonNullable as isNonNullable2 } from "@dxos/util";
1502
1571
  function _ts_decorate3(decorators, target, key, desc) {
1503
1572
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1505,55 +1574,92 @@ function _ts_decorate3(decorators, target, key, desc) {
1505
1574
  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;
1506
1575
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1507
1576
  }
1508
- var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-manager.ts";
1577
+ var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-manager.ts";
1509
1578
  var CallManager = class extends Resource5 {
1510
- /** @reactive */
1511
- get roomId() {
1512
- return this._state.call.roomId;
1513
- }
1514
- /** @reactive */
1515
- get raisedHand() {
1516
- return this._raisedHandSignal.value;
1517
- }
1518
- /** @reactive */
1519
- get speaking() {
1520
- return this._speakingSignal.value;
1521
- }
1522
- /** @reactive */
1523
- get joined() {
1524
- return this._joinedSignal.value;
1525
- }
1526
- /** @reactive */
1527
- get self() {
1528
- return this._state.call.self ?? {};
1529
- }
1530
- /** @reactive */
1531
- get tracks() {
1532
- return this._state.call.tracks ?? {};
1533
- }
1534
- /** @reactive */
1535
- get users() {
1536
- return this._state.call.users ?? [];
1537
- }
1538
- /** @reactive */
1539
- get media() {
1540
- return this._state.media;
1541
- }
1542
- /** @reactive */
1543
- get pulledAudioTracks() {
1544
- return Object.values(this._state.media.pulledAudioTracks).map((track) => track.track);
1545
- }
1546
- /** @reactive */
1547
- get state() {
1548
- return this._state;
1549
- }
1550
- /** @reactive */
1551
- getVideoStream(name) {
1552
- return name ? this._state.media.pulledVideoStreams[name]?.stream : void 0;
1553
- }
1554
- /** @reactive */
1555
- getActivity(key) {
1556
- return this._state.call.activities?.[key];
1579
+ _client;
1580
+ _registry;
1581
+ callStateUpdated = new Event4();
1582
+ // TODO(wittjosiah): Consolidate isSpeaking into the MediaState type.
1583
+ mediaStateUpdated = new Event4();
1584
+ left = new Event4();
1585
+ /**
1586
+ * Atom-based state. Updated via `_updateState()`.
1587
+ * CAUTION: Do not change directly.
1588
+ */
1589
+ _stateAtom = Atom.make({
1590
+ call: {},
1591
+ media: {
1592
+ pulledAudioTracks: {},
1593
+ pulledVideoStreams: {}
1594
+ }
1595
+ });
1596
+ // Derived atoms for reactive subscriptions.
1597
+ _roomIdAtom = Atom.make((get) => get(this._stateAtom).call.roomId);
1598
+ _raisedHandAtom = Atom.make((get) => get(this._stateAtom).call.raisedHand ?? false);
1599
+ _speakingAtom = Atom.make((get) => get(this._stateAtom).call.speaking ?? false);
1600
+ _joinedAtom = Atom.make((get) => get(this._stateAtom).call.joined ?? false);
1601
+ _selfAtom = Atom.make((get) => get(this._stateAtom).call.self ?? {});
1602
+ _tracksAtom = Atom.make((get) => get(this._stateAtom).call.tracks ?? {});
1603
+ _usersAtom = Atom.make((get) => get(this._stateAtom).call.users ?? []);
1604
+ _mediaAtom = Atom.make((get) => get(this._stateAtom).media);
1605
+ _audioTracksToPlayAtom = Atom.make((get) => {
1606
+ const state = get(this._stateAtom);
1607
+ return (state.call.users ?? []).map((user) => user.tracks?.audioEnabled ? user.tracks?.audio : void 0).filter(isNonNullable2).map((track) => state.media.pulledAudioTracks[track]?.track).filter(isNonNullable2);
1608
+ });
1609
+ _videoStreamAtomFamily = Atom.family((name) => Atom.make((get) => get(this._stateAtom).media.pulledVideoStreams[name]?.stream));
1610
+ _activityAtomFamily = Atom.family((key) => Atom.make((get) => get(this._stateAtom).call.activities?.[key]));
1611
+ _swarmSynchronizer;
1612
+ _mediaManager;
1613
+ //
1614
+ // Derived atoms for reactive UI subscriptions.
1615
+ //
1616
+ /** Derived atom for roomId. */
1617
+ get roomIdAtom() {
1618
+ return this._roomIdAtom;
1619
+ }
1620
+ /** Derived atom for raisedHand. */
1621
+ get raisedHandAtom() {
1622
+ return this._raisedHandAtom;
1623
+ }
1624
+ /** Derived atom for speaking. */
1625
+ get speakingAtom() {
1626
+ return this._speakingAtom;
1627
+ }
1628
+ /** Derived atom for joined. */
1629
+ get joinedAtom() {
1630
+ return this._joinedAtom;
1631
+ }
1632
+ /** Derived atom for self. */
1633
+ get selfAtom() {
1634
+ return this._selfAtom;
1635
+ }
1636
+ /** Derived atom for tracks. */
1637
+ get tracksAtom() {
1638
+ return this._tracksAtom;
1639
+ }
1640
+ /** Derived atom for users. */
1641
+ get usersAtom() {
1642
+ return this._usersAtom;
1643
+ }
1644
+ /** Derived atom for media. */
1645
+ get mediaAtom() {
1646
+ return this._mediaAtom;
1647
+ }
1648
+ /** Derived atom for audioTracksToPlay. */
1649
+ get audioTracksToPlayAtom() {
1650
+ return this._audioTracksToPlayAtom;
1651
+ }
1652
+ /** Returns the full state atom for reactive subscriptions. */
1653
+ get stateAtom() {
1654
+ return this._stateAtom;
1655
+ }
1656
+ /** Returns a derived atom for a video stream by name. */
1657
+ videoStreamAtom(name) {
1658
+ return this._videoStreamAtomFamily(name);
1659
+ }
1660
+ /** Returns a derived atom for an activity by key. */
1661
+ activityAtom(key) {
1662
+ return this._activityAtomFamily(key);
1557
1663
  }
1558
1664
  setRoomId(roomId) {
1559
1665
  this._swarmSynchronizer._setRoomId(roomId);
@@ -1586,19 +1692,13 @@ var CallManager = class extends Resource5 {
1586
1692
  return this._mediaManager.turnScreenshareOff();
1587
1693
  }
1588
1694
  // TODO(burdon): Can this be mocked?
1589
- constructor(_client) {
1590
- super(), this._client = _client, this.callStateUpdated = new Event4(), this.mediaStateUpdated = new Event4(), this.left = new Event4(), this._state = live({
1591
- call: {},
1592
- media: {
1593
- pulledAudioTracks: {},
1594
- pulledVideoStreams: {}
1595
- }
1596
- }), this._raisedHandSignal = computed(() => this._state.call.raisedHand ?? false), this._speakingSignal = computed(() => this._state.call.speaking ?? false), this._joinedSignal = computed(() => this._state.call.joined ?? false);
1695
+ constructor(_client, _registry) {
1696
+ super(), this._client = _client, this._registry = _registry;
1597
1697
  this._client.config.getOrThrow("runtime.services.edge.url");
1598
1698
  const networkService = this._client.services.services.NetworkService;
1599
- invariant4(networkService, "network service not found", {
1699
+ invariant5(networkService, "network service not found", {
1600
1700
  F: __dxlog_file6,
1601
- L: 155,
1701
+ L: 180,
1602
1702
  S: this,
1603
1703
  A: [
1604
1704
  "networkService",
@@ -1647,10 +1747,11 @@ var CallManager = class extends Resource5 {
1647
1747
  this._swarmSynchronizer.setJoined(false);
1648
1748
  await this._swarmSynchronizer.leave();
1649
1749
  await this._mediaManager.leave();
1650
- this.roomId && this.left.emit(this.roomId);
1750
+ const roomId = this._registry.get(this._roomIdAtom);
1751
+ roomId && this.left.emit(roomId);
1651
1752
  }
1652
1753
  _onCallStateUpdated(state) {
1653
- const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self?.id)?.flatMap((user) => [
1754
+ const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self.id)?.flatMap((user) => [
1654
1755
  user.tracks?.video,
1655
1756
  user.tracks?.audio,
1656
1757
  user.tracks?.screenshare
@@ -1680,8 +1781,10 @@ var CallManager = class extends Resource5 {
1680
1781
  * Only this method is allowed to change state.
1681
1782
  */
1682
1783
  _updateState() {
1683
- this._state.call = this._swarmSynchronizer._getState();
1684
- this._state.media = this._mediaManager._getState();
1784
+ this._registry.set(this._stateAtom, {
1785
+ call: this._swarmSynchronizer._getState(),
1786
+ media: this._mediaManager._getState()
1787
+ });
1685
1788
  }
1686
1789
  };
1687
1790
  _ts_decorate3([
@@ -1701,10 +1804,8 @@ export {
1701
1804
  getUserMediaTrack,
1702
1805
  getDeviceList,
1703
1806
  getScreenshare,
1704
- createBlackCanvasStreamTrack,
1705
- createInaudibleAudioStreamTrack,
1706
1807
  SpeakingMonitor,
1707
1808
  MediaManager,
1708
1809
  CallManager
1709
1810
  };
1710
- //# sourceMappingURL=chunk-WXNPD542.mjs.map
1811
+ //# sourceMappingURL=chunk-QP3KQOPQ.mjs.map