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