@dxos/plugin-thread 0.8.4-main.5ea62a8 → 0.8.4-main.66e292d

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 (297) hide show
  1. package/dist/lib/browser/ChannelContainer-L7MKV7DS.mjs +17 -0
  2. package/dist/lib/browser/ChatContainer-KPY4BAUE.mjs +16 -0
  3. package/dist/lib/browser/{app-graph-builder-FHAOPO57.mjs → app-graph-builder-TWJ2UCOZ.mjs} +32 -32
  4. package/dist/lib/browser/app-graph-builder-TWJ2UCOZ.mjs.map +7 -0
  5. package/dist/lib/browser/blueprint-definition-TQ4JFMZZ.mjs +101 -0
  6. package/dist/lib/browser/blueprint-definition-TQ4JFMZZ.mjs.map +7 -0
  7. package/dist/lib/browser/{call-manager-EW2QC6Q4.mjs → call-manager-4YFT4XA6.mjs} +8 -7
  8. package/dist/lib/{node-esm/call-manager-N3KASRDQ.mjs.map → browser/call-manager-4YFT4XA6.mjs.map} +1 -1
  9. package/dist/lib/browser/{chunk-TQJYDFBU.mjs → chunk-ALZKJOZK.mjs} +40 -37
  10. package/dist/lib/browser/chunk-ALZKJOZK.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-ANTFU4JB.mjs +25 -0
  12. package/dist/lib/browser/chunk-ANTFU4JB.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-CFC7LEPD.mjs +18 -0
  14. package/dist/lib/browser/chunk-CFC7LEPD.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-GERVMFQW.mjs → chunk-CP7E2HRE.mjs} +2 -2
  16. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-KEXJGF2R.mjs → chunk-ISCHODBV.mjs} +53 -3
  18. package/dist/lib/browser/chunk-ISCHODBV.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  20. package/dist/lib/browser/{chunk-KTWYVC5X.mjs → chunk-JDJPMI7V.mjs} +47 -51
  21. package/dist/lib/browser/chunk-JDJPMI7V.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-2P3GVRHP.mjs → chunk-KOBXMDCI.mjs} +68 -67
  23. package/dist/lib/browser/chunk-KOBXMDCI.mjs.map +7 -0
  24. package/dist/lib/browser/{chunk-J26C57ZY.mjs → chunk-NPT5S6N4.mjs} +164 -101
  25. package/dist/lib/browser/chunk-NPT5S6N4.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-QM34EZQK.mjs +20 -0
  27. package/dist/lib/browser/chunk-QM34EZQK.mjs.map +7 -0
  28. package/dist/lib/browser/{chunk-H63NDV62.mjs → chunk-TLOOZTRD.mjs} +18 -17
  29. package/dist/lib/browser/chunk-TLOOZTRD.mjs.map +7 -0
  30. package/dist/lib/browser/{chunk-TUSBPMNU.mjs → chunk-ZCW3NSDZ.mjs} +274 -374
  31. package/dist/lib/browser/chunk-ZCW3NSDZ.mjs.map +7 -0
  32. package/dist/lib/browser/index.mjs +55 -57
  33. package/dist/lib/browser/index.mjs.map +3 -3
  34. package/dist/lib/browser/{intent-resolver-IB5GYU2D.mjs → intent-resolver-G33FT3NO.mjs} +40 -113
  35. package/dist/lib/browser/intent-resolver-G33FT3NO.mjs.map +7 -0
  36. package/dist/lib/browser/{markdown-Z677YORA.mjs → markdown-WFZFYJBQ.mjs} +30 -27
  37. package/dist/lib/browser/markdown-WFZFYJBQ.mjs.map +7 -0
  38. package/dist/lib/browser/meta.json +1 -1
  39. package/dist/lib/browser/react-root-ED7PHA44.mjs +29 -0
  40. package/dist/lib/browser/react-root-ED7PHA44.mjs.map +7 -0
  41. package/dist/lib/browser/{react-surface-X2VB6P37.mjs → react-surface-AUQQSQQC.mjs} +38 -36
  42. package/dist/lib/browser/react-surface-AUQQSQQC.mjs.map +7 -0
  43. package/dist/lib/browser/repair-JFJLEM2O.mjs +35 -0
  44. package/dist/lib/browser/repair-JFJLEM2O.mjs.map +7 -0
  45. package/dist/lib/browser/{settings-GRKEID73.mjs → settings-E6IOLK46.mjs} +6 -5
  46. package/dist/lib/{node-esm/settings-F2ODVNNW.mjs.map → browser/settings-E6IOLK46.mjs.map} +1 -1
  47. package/dist/lib/browser/{state-2T4KDWBX.mjs → state-UYPLBGZJ.mjs} +6 -5
  48. package/dist/lib/{node-esm/state-62TQKQVB.mjs.map → browser/state-UYPLBGZJ.mjs.map} +1 -1
  49. package/dist/lib/browser/types/index.mjs +7 -10
  50. package/dist/lib/node-esm/ChannelContainer-FYONOOZ6.mjs +18 -0
  51. package/dist/lib/node-esm/ChatContainer-TLQG23K7.mjs +17 -0
  52. package/dist/lib/node-esm/ChatContainer-TLQG23K7.mjs.map +7 -0
  53. package/dist/lib/node-esm/{app-graph-builder-XEYWX5FC.mjs → app-graph-builder-VD6I2V5H.mjs} +32 -32
  54. package/dist/lib/node-esm/app-graph-builder-VD6I2V5H.mjs.map +7 -0
  55. package/dist/lib/node-esm/blueprint-definition-TSX5HHW7.mjs +102 -0
  56. package/dist/lib/node-esm/blueprint-definition-TSX5HHW7.mjs.map +7 -0
  57. package/dist/lib/node-esm/{call-manager-N3KASRDQ.mjs → call-manager-UMUXEYH5.mjs} +8 -7
  58. package/dist/lib/{browser/call-manager-EW2QC6Q4.mjs.map → node-esm/call-manager-UMUXEYH5.mjs.map} +1 -1
  59. package/dist/lib/node-esm/chunk-2AEIN5MI.mjs +22 -0
  60. package/dist/lib/node-esm/chunk-2AEIN5MI.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-JR7KESLL.mjs → chunk-7KZWZS2U.mjs} +274 -374
  62. package/dist/lib/node-esm/chunk-7KZWZS2U.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-CCE5LHBE.mjs → chunk-AB42KYF3.mjs} +40 -37
  64. package/dist/lib/node-esm/chunk-AB42KYF3.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-57XR3LEF.mjs → chunk-ABUFOZVX.mjs} +2 -2
  66. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-ATNY37UV.mjs +27 -0
  68. package/dist/lib/node-esm/chunk-ATNY37UV.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-UHZQTPXU.mjs → chunk-E5HNHFYH.mjs} +18 -17
  70. package/dist/lib/node-esm/chunk-E5HNHFYH.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-NNKKNW57.mjs → chunk-FF3QVPY4.mjs} +164 -101
  72. package/dist/lib/node-esm/chunk-FF3QVPY4.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  74. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-P6E247RF.mjs → chunk-P2M364TO.mjs} +47 -51
  76. package/dist/lib/node-esm/chunk-P2M364TO.mjs.map +7 -0
  77. package/dist/lib/node-esm/{chunk-CTZ75IFK.mjs → chunk-PZH2EDU5.mjs} +68 -67
  78. package/dist/lib/node-esm/chunk-PZH2EDU5.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-RT6NRL2I.mjs +19 -0
  80. package/dist/lib/node-esm/chunk-RT6NRL2I.mjs.map +7 -0
  81. package/dist/lib/node-esm/{chunk-S3D7DTBF.mjs → chunk-VBI32FGI.mjs} +53 -3
  82. package/dist/lib/node-esm/chunk-VBI32FGI.mjs.map +7 -0
  83. package/dist/lib/node-esm/index.mjs +55 -57
  84. package/dist/lib/node-esm/index.mjs.map +3 -3
  85. package/dist/lib/node-esm/{intent-resolver-VIMI5VLH.mjs → intent-resolver-4PX3WXQG.mjs} +40 -113
  86. package/dist/lib/node-esm/intent-resolver-4PX3WXQG.mjs.map +7 -0
  87. package/dist/lib/node-esm/{markdown-FL4IXLRP.mjs → markdown-CSR5MAPZ.mjs} +30 -27
  88. package/dist/lib/node-esm/markdown-CSR5MAPZ.mjs.map +7 -0
  89. package/dist/lib/node-esm/meta.json +1 -1
  90. package/dist/lib/node-esm/react-root-DZN324JA.mjs +30 -0
  91. package/dist/lib/node-esm/react-root-DZN324JA.mjs.map +7 -0
  92. package/dist/lib/node-esm/{react-surface-OLN3XNND.mjs → react-surface-AMVESEF4.mjs} +38 -36
  93. package/dist/lib/node-esm/react-surface-AMVESEF4.mjs.map +7 -0
  94. package/dist/lib/node-esm/repair-RMLR24YR.mjs +36 -0
  95. package/dist/lib/node-esm/repair-RMLR24YR.mjs.map +7 -0
  96. package/dist/lib/node-esm/{settings-F2ODVNNW.mjs → settings-RGZHWDSO.mjs} +6 -5
  97. package/dist/lib/{browser/settings-GRKEID73.mjs.map → node-esm/settings-RGZHWDSO.mjs.map} +1 -1
  98. package/dist/lib/node-esm/{state-62TQKQVB.mjs → state-XNWOLBNE.mjs} +6 -5
  99. package/dist/lib/{browser/state-2T4KDWBX.mjs.map → node-esm/state-XNWOLBNE.mjs.map} +1 -1
  100. package/dist/lib/node-esm/types/index.mjs +7 -10
  101. package/dist/types/src/ThreadPlugin.d.ts +1 -1
  102. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  103. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  104. package/dist/types/src/calls/types.d.ts.map +1 -1
  105. package/dist/types/src/calls/util/calls-service.d.ts +2 -0
  106. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  107. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  108. package/dist/types/src/calls-service.stories.d.ts +0 -1
  109. package/dist/types/src/calls-service.stories.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
  112. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/capabilities.d.ts +2 -2
  114. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/index.d.ts +2 -1
  116. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  118. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  120. package/dist/types/src/capabilities/repair.d.ts +4 -0
  121. package/dist/types/src/capabilities/repair.d.ts.map +1 -0
  122. package/dist/types/src/components/Call/Toolbar.d.ts +2 -2
  123. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  124. package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
  125. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
  126. package/dist/types/src/components/ChannelContainer.d.ts +2 -2
  127. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  128. package/dist/types/src/components/ChannelContainer.stories.d.ts +79 -9
  129. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/Chat.stories.d.ts +79 -7
  131. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  132. package/dist/types/src/components/ChatContainer.d.ts +6 -5
  133. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  134. package/dist/types/src/components/Comments.stories.d.ts +8 -3
  135. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/CommentsContainer.d.ts +2 -2
  137. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  138. package/dist/types/src/components/CommentsThreadContainer.d.ts +8 -8
  139. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
  140. package/dist/types/src/components/Media/VideoObject.d.ts +2 -2
  141. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
  142. package/dist/types/src/components/Media/VideoObject.stories.d.ts +5 -3
  143. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  144. package/dist/types/src/components/MessageContainer.d.ts +4 -2
  145. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  146. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +9 -3
  147. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  148. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +9 -3
  149. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  150. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  151. package/dist/types/src/components/ThreadCompanion.d.ts +5 -0
  152. package/dist/types/src/components/ThreadCompanion.d.ts.map +1 -0
  153. package/dist/types/src/components/ThreadSettings.d.ts +1 -1
  154. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  155. package/dist/types/src/components/index.d.ts +3 -3
  156. package/dist/types/src/components/index.d.ts.map +1 -1
  157. package/dist/types/src/components/testing.d.ts +3 -3
  158. package/dist/types/src/components/testing.d.ts.map +1 -1
  159. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  160. package/dist/types/src/functions/create-proposals.d.ts +6 -0
  161. package/dist/types/src/functions/create-proposals.d.ts.map +1 -0
  162. package/dist/types/src/functions/index.d.ts +2 -0
  163. package/dist/types/src/functions/index.d.ts.map +1 -0
  164. package/dist/types/src/hooks/analytics.d.ts +2 -2
  165. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  166. package/dist/types/src/hooks/index.d.ts +2 -2
  167. package/dist/types/src/hooks/index.d.ts.map +1 -1
  168. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +1 -1
  169. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -1
  170. package/dist/types/src/meta.d.ts +1 -2
  171. package/dist/types/src/meta.d.ts.map +1 -1
  172. package/dist/types/src/testing/stories.d.ts.map +1 -1
  173. package/dist/types/src/translations.d.ts +78 -7
  174. package/dist/types/src/translations.d.ts.map +1 -1
  175. package/dist/types/src/types/Channel.d.ts +16 -0
  176. package/dist/types/src/types/Channel.d.ts.map +1 -0
  177. package/dist/types/src/types/index.d.ts +1 -1
  178. package/dist/types/src/types/index.d.ts.map +1 -1
  179. package/dist/types/src/types/types.d.ts +130 -244
  180. package/dist/types/src/types/types.d.ts.map +1 -1
  181. package/dist/types/tsconfig.tsbuildinfo +1 -1
  182. package/package.json +64 -60
  183. package/src/ThreadPlugin.tsx +135 -134
  184. package/src/calls/call-manager.ts +1 -1
  185. package/src/calls/media-manager.ts +11 -7
  186. package/src/calls/types.ts +7 -3
  187. package/src/calls/util/calls-service.ts +12 -7
  188. package/src/calls/util/stub-media-streams.ts +61 -3
  189. package/src/calls-service.stories.tsx +2 -5
  190. package/src/capabilities/app-graph-builder.ts +41 -30
  191. package/src/capabilities/blueprint-definition.ts +38 -0
  192. package/src/capabilities/capabilities.ts +7 -7
  193. package/src/capabilities/index.ts +2 -1
  194. package/src/capabilities/intent-resolver.ts +29 -67
  195. package/src/capabilities/markdown.ts +5 -3
  196. package/src/capabilities/react-root.tsx +2 -2
  197. package/src/capabilities/react-surface.tsx +25 -23
  198. package/src/capabilities/repair.ts +40 -0
  199. package/src/components/Call/Call.tsx +1 -1
  200. package/src/components/Call/Toolbar.tsx +9 -9
  201. package/src/components/CallDebugPanel.tsx +112 -55
  202. package/src/components/CallSidebar.tsx +1 -1
  203. package/src/components/ChannelContainer.stories.tsx +10 -10
  204. package/src/components/ChannelContainer.tsx +19 -15
  205. package/src/components/Chat.stories.tsx +14 -19
  206. package/src/components/ChatContainer.tsx +29 -21
  207. package/src/components/Comments.stories.tsx +11 -17
  208. package/src/components/CommentsContainer.tsx +5 -7
  209. package/src/components/CommentsThreadContainer.tsx +31 -27
  210. package/src/components/Lobby/Lobby.tsx +1 -1
  211. package/src/components/Media/VideoObject.stories.tsx +12 -7
  212. package/src/components/Media/VideoObject.tsx +1 -1
  213. package/src/components/MessageContainer.tsx +11 -9
  214. package/src/components/Participant/Participant.tsx +1 -1
  215. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +3 -4
  216. package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +2 -2
  217. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +4 -5
  218. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +5 -5
  219. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +5 -2
  220. package/src/components/{ThreadComplementary.tsx → ThreadCompanion.tsx} +41 -34
  221. package/src/components/ThreadSettings.tsx +4 -5
  222. package/src/components/index.ts +4 -4
  223. package/src/components/testing.ts +7 -9
  224. package/src/extensions/threads.ts +30 -20
  225. package/src/functions/create-proposals.ts +56 -0
  226. package/src/functions/index.ts +5 -0
  227. package/src/hooks/analytics.ts +4 -7
  228. package/src/hooks/index.ts +3 -2
  229. package/src/hooks/useVideoStreamTrack.tsx +1 -1
  230. package/src/meta.ts +9 -5
  231. package/src/testing/stories.ts +3 -6
  232. package/src/translations.ts +8 -4
  233. package/src/types/Channel.ts +26 -0
  234. package/src/types/index.ts +1 -1
  235. package/src/types/types.ts +21 -29
  236. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  237. package/src/util.ts +1 -1
  238. package/dist/lib/browser/ChannelContainer-GHDNEZT2.mjs +0 -16
  239. package/dist/lib/browser/ChatContainer-42ALOWUA.mjs +0 -15
  240. package/dist/lib/browser/app-graph-builder-FHAOPO57.mjs.map +0 -7
  241. package/dist/lib/browser/chunk-2I277V52.mjs +0 -23
  242. package/dist/lib/browser/chunk-2I277V52.mjs.map +0 -7
  243. package/dist/lib/browser/chunk-2P3GVRHP.mjs.map +0 -7
  244. package/dist/lib/browser/chunk-4APCDRSH.mjs +0 -18
  245. package/dist/lib/browser/chunk-4APCDRSH.mjs.map +0 -7
  246. package/dist/lib/browser/chunk-EV4JWI7L.mjs +0 -17
  247. package/dist/lib/browser/chunk-EV4JWI7L.mjs.map +0 -7
  248. package/dist/lib/browser/chunk-GERVMFQW.mjs.map +0 -7
  249. package/dist/lib/browser/chunk-H63NDV62.mjs.map +0 -7
  250. package/dist/lib/browser/chunk-J26C57ZY.mjs.map +0 -7
  251. package/dist/lib/browser/chunk-KEXJGF2R.mjs.map +0 -7
  252. package/dist/lib/browser/chunk-KTWYVC5X.mjs.map +0 -7
  253. package/dist/lib/browser/chunk-TQJYDFBU.mjs.map +0 -7
  254. package/dist/lib/browser/chunk-TUSBPMNU.mjs.map +0 -7
  255. package/dist/lib/browser/intent-resolver-IB5GYU2D.mjs.map +0 -7
  256. package/dist/lib/browser/markdown-Z677YORA.mjs.map +0 -7
  257. package/dist/lib/browser/react-root-PTTTW2MO.mjs +0 -28
  258. package/dist/lib/browser/react-root-PTTTW2MO.mjs.map +0 -7
  259. package/dist/lib/browser/react-surface-X2VB6P37.mjs.map +0 -7
  260. package/dist/lib/browser/toolkit-KUPIIFC6.mjs +0 -80
  261. package/dist/lib/browser/toolkit-KUPIIFC6.mjs.map +0 -7
  262. package/dist/lib/node-esm/ChannelContainer-D5E2S6AI.mjs +0 -17
  263. package/dist/lib/node-esm/ChatContainer-4EGHKHIU.mjs +0 -16
  264. package/dist/lib/node-esm/app-graph-builder-XEYWX5FC.mjs.map +0 -7
  265. package/dist/lib/node-esm/chunk-57XR3LEF.mjs.map +0 -7
  266. package/dist/lib/node-esm/chunk-CCE5LHBE.mjs.map +0 -7
  267. package/dist/lib/node-esm/chunk-CTZ75IFK.mjs.map +0 -7
  268. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs +0 -19
  269. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs.map +0 -7
  270. package/dist/lib/node-esm/chunk-JR7KESLL.mjs.map +0 -7
  271. package/dist/lib/node-esm/chunk-NNKKNW57.mjs.map +0 -7
  272. package/dist/lib/node-esm/chunk-P6E247RF.mjs.map +0 -7
  273. package/dist/lib/node-esm/chunk-PYTVBN5J.mjs +0 -19
  274. package/dist/lib/node-esm/chunk-PYTVBN5J.mjs.map +0 -7
  275. package/dist/lib/node-esm/chunk-S3D7DTBF.mjs.map +0 -7
  276. package/dist/lib/node-esm/chunk-UHZQTPXU.mjs.map +0 -7
  277. package/dist/lib/node-esm/chunk-UJ2QNRLS.mjs +0 -25
  278. package/dist/lib/node-esm/chunk-UJ2QNRLS.mjs.map +0 -7
  279. package/dist/lib/node-esm/intent-resolver-VIMI5VLH.mjs.map +0 -7
  280. package/dist/lib/node-esm/markdown-FL4IXLRP.mjs.map +0 -7
  281. package/dist/lib/node-esm/react-root-2HHRRUME.mjs +0 -29
  282. package/dist/lib/node-esm/react-root-2HHRRUME.mjs.map +0 -7
  283. package/dist/lib/node-esm/react-surface-OLN3XNND.mjs.map +0 -7
  284. package/dist/lib/node-esm/toolkit-KZIS7G36.mjs +0 -81
  285. package/dist/lib/node-esm/toolkit-KZIS7G36.mjs.map +0 -7
  286. package/dist/types/src/capabilities/toolkit.d.ts +0 -5
  287. package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
  288. package/dist/types/src/components/ThreadComplementary.d.ts +0 -5
  289. package/dist/types/src/components/ThreadComplementary.d.ts.map +0 -1
  290. package/dist/types/src/types/schema.d.ts +0 -177
  291. package/dist/types/src/types/schema.d.ts.map +0 -1
  292. package/src/capabilities/toolkit.ts +0 -78
  293. package/src/types/schema.ts +0 -33
  294. /package/dist/lib/browser/{ChannelContainer-GHDNEZT2.mjs.map → ChannelContainer-L7MKV7DS.mjs.map} +0 -0
  295. /package/dist/lib/browser/{ChatContainer-42ALOWUA.mjs.map → ChatContainer-KPY4BAUE.mjs.map} +0 -0
  296. /package/dist/lib/{node-esm/ChannelContainer-D5E2S6AI.mjs.map → browser/chunk-J5LGTIGS.mjs.map} +0 -0
  297. /package/dist/lib/node-esm/{ChatContainer-4EGHKHIU.mjs.map → ChannelContainer-FYONOOZ6.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-thread",
3
- "version": "0.8.4-main.5ea62a8",
3
+ "version": "0.8.4-main.66e292d",
4
4
  "description": "DXOS Threads Surface plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -35,79 +35,83 @@
35
35
  "src"
36
36
  ],
37
37
  "dependencies": {
38
- "@codemirror/language": "^6.10.3",
39
- "@codemirror/state": "^6.4.1",
40
- "@codemirror/view": "^6.34.1",
41
- "@effect/ai": "0.25.2",
38
+ "@codemirror/language": "^6.11.3",
39
+ "@codemirror/state": "^6.5.2",
40
+ "@codemirror/view": "^6.38.4",
41
+ "@effect/ai": "0.29.1",
42
+ "@effect/experimental": "0.56.0",
42
43
  "@peermetrics/webrtc-stats": "5.7.1",
43
44
  "@preact-signals/safe-react": "^0.9.0",
44
- "@preact/signals-core": "^1.9.0",
45
+ "@preact/signals-core": "^1.12.1",
45
46
  "date-fns": "^3.3.1",
46
47
  "extendable-media-recorder": "^9.2.19",
47
48
  "extendable-media-recorder-wav-encoder": "^7.0.123",
48
49
  "md5-hex": "5.0.0",
49
50
  "react-resize-detector": "^11.0.1",
50
51
  "wavefile": "^11.0.0",
51
- "@dxos/app-framework": "0.8.4-main.5ea62a8",
52
- "@dxos/assistant": "0.8.4-main.5ea62a8",
53
- "@dxos/async": "0.8.4-main.5ea62a8",
54
- "@dxos/debug": "0.8.4-main.5ea62a8",
55
- "@dxos/devtools": "0.8.4-main.5ea62a8",
56
- "@dxos/codec-protobuf": "0.8.4-main.5ea62a8",
57
- "@dxos/display-name": "0.8.4-main.5ea62a8",
58
- "@dxos/echo": "0.8.4-main.5ea62a8",
59
- "@dxos/echo-schema": "0.8.4-main.5ea62a8",
60
- "@dxos/invariant": "0.8.4-main.5ea62a8",
61
- "@dxos/keys": "0.8.4-main.5ea62a8",
62
- "@dxos/live-object": "0.8.4-main.5ea62a8",
63
- "@dxos/context": "0.8.4-main.5ea62a8",
64
- "@dxos/log": "0.8.4-main.5ea62a8",
65
- "@dxos/local-storage": "0.8.4-main.5ea62a8",
66
- "@dxos/plugin-attention": "0.8.4-main.5ea62a8",
67
- "@dxos/plugin-deck": "0.8.4-main.5ea62a8",
68
- "@dxos/plugin-graph": "0.8.4-main.5ea62a8",
69
- "@dxos/plugin-markdown": "0.8.4-main.5ea62a8",
70
- "@dxos/plugin-observability": "0.8.4-main.5ea62a8",
71
- "@dxos/plugin-client": "0.8.4-main.5ea62a8",
72
- "@dxos/plugin-space": "0.8.4-main.5ea62a8",
73
- "@dxos/protocols": "0.8.4-main.5ea62a8",
74
- "@dxos/react-client": "0.8.4-main.5ea62a8",
75
- "@dxos/react-ui-dnd": "0.8.4-main.5ea62a8",
76
- "@dxos/react-ui-editor": "0.8.4-main.5ea62a8",
77
- "@dxos/react-ui-form": "0.8.4-main.5ea62a8",
78
- "@dxos/react-ui-attention": "0.8.4-main.5ea62a8",
79
- "@dxos/react-ui-menu": "0.8.4-main.5ea62a8",
80
- "@dxos/react-ui-stack": "0.8.4-main.5ea62a8",
81
- "@dxos/react-ui-sfx": "0.8.4-main.5ea62a8",
82
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.5ea62a8",
83
- "@dxos/react-ui-tabs": "0.8.4-main.5ea62a8",
84
- "@dxos/schema": "0.8.4-main.5ea62a8",
85
- "@dxos/util": "0.8.4-main.5ea62a8",
86
- "@dxos/react-ui-thread": "0.8.4-main.5ea62a8"
52
+ "@dxos/app-framework": "0.8.4-main.66e292d",
53
+ "@dxos/assistant": "0.8.4-main.66e292d",
54
+ "@dxos/async": "0.8.4-main.66e292d",
55
+ "@dxos/blueprints": "0.8.4-main.66e292d",
56
+ "@dxos/codec-protobuf": "0.8.4-main.66e292d",
57
+ "@dxos/context": "0.8.4-main.66e292d",
58
+ "@dxos/debug": "0.8.4-main.66e292d",
59
+ "@dxos/devtools": "0.8.4-main.66e292d",
60
+ "@dxos/echo": "0.8.4-main.66e292d",
61
+ "@dxos/echo-db": "0.8.4-main.66e292d",
62
+ "@dxos/display-name": "0.8.4-main.66e292d",
63
+ "@dxos/functions": "0.8.4-main.66e292d",
64
+ "@dxos/invariant": "0.8.4-main.66e292d",
65
+ "@dxos/keys": "0.8.4-main.66e292d",
66
+ "@dxos/local-storage": "0.8.4-main.66e292d",
67
+ "@dxos/live-object": "0.8.4-main.66e292d",
68
+ "@dxos/log": "0.8.4-main.66e292d",
69
+ "@dxos/plugin-attention": "0.8.4-main.66e292d",
70
+ "@dxos/plugin-client": "0.8.4-main.66e292d",
71
+ "@dxos/plugin-deck": "0.8.4-main.66e292d",
72
+ "@dxos/plugin-graph": "0.8.4-main.66e292d",
73
+ "@dxos/plugin-markdown": "0.8.4-main.66e292d",
74
+ "@dxos/plugin-observability": "0.8.4-main.66e292d",
75
+ "@dxos/plugin-space": "0.8.4-main.66e292d",
76
+ "@dxos/protocols": "0.8.4-main.66e292d",
77
+ "@dxos/react-ui-attention": "0.8.4-main.66e292d",
78
+ "@dxos/react-ui-dnd": "0.8.4-main.66e292d",
79
+ "@dxos/react-ui-editor": "0.8.4-main.66e292d",
80
+ "@dxos/react-ui-form": "0.8.4-main.66e292d",
81
+ "@dxos/react-ui-menu": "0.8.4-main.66e292d",
82
+ "@dxos/react-ui-sfx": "0.8.4-main.66e292d",
83
+ "@dxos/react-ui-stack": "0.8.4-main.66e292d",
84
+ "@dxos/react-ui-tabs": "0.8.4-main.66e292d",
85
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.66e292d",
86
+ "@dxos/react-ui-thread": "0.8.4-main.66e292d",
87
+ "@dxos/schema": "0.8.4-main.66e292d",
88
+ "@dxos/types": "0.8.4-main.66e292d",
89
+ "@dxos/util": "0.8.4-main.66e292d",
90
+ "@dxos/react-client": "0.8.4-main.66e292d"
87
91
  },
88
92
  "devDependencies": {
89
- "@effect-rx/rx-react": "0.38.0",
90
- "@effect/platform": "0.90.2",
91
- "@types/react": "~18.2.0",
92
- "@types/react-dom": "~18.2.0",
93
- "effect": "3.17.7",
94
- "react": "~18.2.0",
95
- "react-dom": "~18.2.0",
96
- "vite": "7.1.1",
97
- "@dxos/plugin-theme": "0.8.4-main.5ea62a8",
98
- "@dxos/random": "0.8.4-main.5ea62a8",
99
- "@dxos/react-ui": "0.8.4-main.5ea62a8",
100
- "@dxos/react-ui-theme": "0.8.4-main.5ea62a8",
101
- "@dxos/storybook-utils": "0.8.4-main.5ea62a8"
93
+ "@effect-atom/atom-react": "^0.3.4",
94
+ "@effect/platform": "0.92.1",
95
+ "@types/react": "~19.2.2",
96
+ "@types/react-dom": "~19.2.2",
97
+ "effect": "3.18.3",
98
+ "react": "~19.2.0",
99
+ "react-dom": "~19.2.0",
100
+ "vite": "7.1.9",
101
+ "@dxos/plugin-theme": "0.8.4-main.66e292d",
102
+ "@dxos/random": "0.8.4-main.66e292d",
103
+ "@dxos/react-ui": "0.8.4-main.66e292d",
104
+ "@dxos/react-ui-theme": "0.8.4-main.66e292d",
105
+ "@dxos/storybook-utils": "0.8.4-main.66e292d"
102
106
  },
103
107
  "peerDependencies": {
104
- "@effect-rx/rx-react": "^0.34.1",
108
+ "@effect-atom/atom-react": "^0.3.4",
105
109
  "@effect/platform": "^0.80.12",
106
110
  "effect": "^3.13.3",
107
- "react": "~18.2.0",
108
- "react-dom": "~18.2.0",
109
- "@dxos/react-ui": "0.8.4-main.5ea62a8",
110
- "@dxos/react-ui-theme": "0.8.4-main.5ea62a8"
111
+ "react": "^19.0.0",
112
+ "react-dom": "^19.0.0",
113
+ "@dxos/react-ui": "0.8.4-main.66e292d",
114
+ "@dxos/react-ui-theme": "0.8.4-main.66e292d"
111
115
  },
112
116
  "publishConfig": {
113
117
  "access": "public"
@@ -3,160 +3,161 @@
3
3
  //
4
4
 
5
5
  import { Capabilities, Events, contributes, createIntent, defineModule, definePlugin } from '@dxos/app-framework';
6
- import { Ref } from '@dxos/echo';
6
+ import { Ref, Type } from '@dxos/echo';
7
7
  import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
8
8
  import { MarkdownEvents } from '@dxos/plugin-markdown';
9
9
  import { SpaceCapabilities, SpaceEvents } from '@dxos/plugin-space';
10
- import { defineObjectForm } from '@dxos/plugin-space/types';
10
+ import { type CreateObjectIntent } from '@dxos/plugin-space/types';
11
11
  import { translations as threadTranslations } from '@dxos/react-ui-thread';
12
- import { AnchoredTo, DataType } from '@dxos/schema';
12
+ import { AnchoredTo, Message, Thread } from '@dxos/types';
13
13
 
14
14
  import {
15
15
  AppGraphBuilder,
16
+ BlueprintDefinition,
16
17
  CallManager,
17
18
  IntentResolver,
18
19
  Markdown,
19
20
  ReactRoot,
20
21
  ReactSurface,
22
+ Repair,
21
23
  ThreadState,
22
- Toolkit,
23
24
  } from './capabilities';
24
25
  import { THREAD_ITEM, meta } from './meta';
25
26
  import { translations } from './translations';
26
- import { ChannelType, ThreadAction, ThreadType } from './types';
27
+ import { Channel, ThreadAction } from './types';
27
28
 
28
29
  // TODO(Zan): Every instance of `cursor` should be replaced with `anchor`.
29
30
  // NOTE(burdon): Review/discuss CursorConverter semantics.
30
31
 
31
32
  // TODO(wittjosiah): Rename to ChatPlugin.
32
33
  // TODO(wittjosiah): Enabling comments should likely be factored out of this plugin but depend on it's capabilities.
33
- export const ThreadPlugin = () =>
34
- definePlugin(meta, [
35
- defineModule({
36
- id: `${meta.id}/module/call-manager`,
37
- activatesOn: ClientEvents.ClientReady,
38
- activate: CallManager,
39
- }),
40
- // TODO(wittjosiah): Currently not used but leaving because there will likely be settings for threads again.
41
- // defineModule({
42
- // id: `${meta.id}/module/settings`,
43
- // activatesOn: Events.SetupSettings,
44
- // activate: ThreadSettings,
45
- // }),
46
- defineModule({
47
- id: `${meta.id}/module/state`,
48
- // TODO(wittjosiah): Does not integrate with settings store.
49
- // Should this be a different event?
50
- // Should settings store be renamed to be more generic?
51
- activatesOn: Events.SetupSettings,
52
- activate: ThreadState,
53
- }),
54
- defineModule({
55
- id: `${meta.id}/module/translations`,
56
- activatesOn: Events.SetupTranslations,
57
- activate: () => contributes(Capabilities.Translations, [...translations, ...threadTranslations]),
58
- }),
59
- defineModule({
60
- id: `${meta.id}/module/metadata`,
61
- activatesOn: Events.SetupMetadata,
62
- activate: () => [
63
- contributes(Capabilities.Metadata, {
64
- id: ChannelType.typename,
65
- metadata: {
66
- icon: 'ph--hash--regular',
34
+ export const ThreadPlugin = definePlugin(meta, () => [
35
+ defineModule({
36
+ id: `${meta.id}/module/call-manager`,
37
+ activatesOn: ClientEvents.ClientReady,
38
+ activate: CallManager,
39
+ }),
40
+ // TODO(wittjosiah): Currently not used but leaving because there will likely be settings for threads again.
41
+ // defineModule({
42
+ // id: `${meta.id}/module/settings`,
43
+ // activatesOn: Events.SetupSettings,
44
+ // activate: ThreadSettings,
45
+ // }),
46
+ defineModule({
47
+ id: `${meta.id}/module/state`,
48
+ // TODO(wittjosiah): Does not integrate with settings store.
49
+ // Should this be a different event?
50
+ // Should settings store be renamed to be more generic?
51
+ activatesOn: Events.SetupSettings,
52
+ activate: ThreadState,
53
+ }),
54
+ defineModule({
55
+ id: `${meta.id}/module/translations`,
56
+ activatesOn: Events.SetupTranslations,
57
+ activate: () => contributes(Capabilities.Translations, [...translations, ...threadTranslations]),
58
+ }),
59
+ defineModule({
60
+ id: `${meta.id}/module/metadata`,
61
+ activatesOn: Events.SetupMetadata,
62
+ activate: () => [
63
+ contributes(Capabilities.Metadata, {
64
+ id: Type.getTypename(Channel.Channel),
65
+ metadata: {
66
+ icon: 'ph--hash--regular',
67
+ iconHue: 'rose',
68
+ createObjectIntent: ((_, options) =>
69
+ createIntent(ThreadAction.CreateChannel, {
70
+ spaceId: options.space.id,
71
+ })) satisfies CreateObjectIntent,
72
+ },
73
+ }),
74
+ contributes(Capabilities.Metadata, {
75
+ id: Type.getTypename(Thread.Thread),
76
+ metadata: {
77
+ // TODO(wittjosiah): Move out of metadata.
78
+ loadReferences: async (thread: Thread.Thread) => await Ref.Array.loadAll(thread.messages ?? []),
79
+ },
80
+ }),
81
+ contributes(Capabilities.Metadata, {
82
+ id: Message.Message.typename,
83
+ metadata: {
84
+ // TODO(wittjosiah): Move out of metadata.
85
+ loadReferences: () => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),
86
+ },
87
+ }),
88
+ contributes(Capabilities.Metadata, {
89
+ id: THREAD_ITEM,
90
+ metadata: {
91
+ parse: (item: Thread.Thread, type: string) => {
92
+ switch (type) {
93
+ case 'node':
94
+ return { id: item.id, label: item.name, data: item };
95
+ case 'object':
96
+ return item;
97
+ case 'view-object':
98
+ return { id: `${item.id}-view`, object: item };
99
+ }
67
100
  },
68
- }),
69
- contributes(Capabilities.Metadata, {
70
- id: ThreadType.typename,
71
- metadata: {
72
- // TODO(wittjosiah): Move out of metadata.
73
- loadReferences: async (thread: ThreadType) => await Ref.Array.loadAll(thread.messages ?? []),
74
- },
75
- }),
76
- contributes(Capabilities.Metadata, {
77
- id: DataType.Message.typename,
78
- metadata: {
79
- // TODO(wittjosiah): Move out of metadata.
80
- loadReferences: (message: DataType.Message) => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),
81
- },
82
- }),
83
- contributes(Capabilities.Metadata, {
84
- id: THREAD_ITEM,
85
- metadata: {
86
- parse: (item: ThreadType, type: string) => {
87
- switch (type) {
88
- case 'node':
89
- return { id: item.id, label: item.name, data: item };
90
- case 'object':
91
- return item;
92
- case 'view-object':
93
- return { id: `${item.id}-view`, object: item };
94
- }
95
- },
96
- },
97
- }),
98
- ],
99
- }),
100
- defineModule({
101
- id: `${meta.id}/module/object-form`,
102
- activatesOn: ClientEvents.SetupSchema,
103
- activate: () =>
104
- contributes(
105
- SpaceCapabilities.ObjectForm,
106
- defineObjectForm({
107
- objectSchema: ChannelType,
108
- getIntent: (_, options) => createIntent(ThreadAction.CreateChannel, { spaceId: options.space.id }),
109
- }),
110
- ),
111
- }),
112
- defineModule({
113
- id: `${meta.id}/module/schema`,
114
- activatesOn: ClientEvents.SetupSchema,
115
- activate: () =>
116
- contributes(ClientCapabilities.Schema, [AnchoredTo, ThreadType, DataType.Message, DataType.MessageV1]),
117
- }),
118
- defineModule({
119
- id: `${meta.id}/module/migration`,
120
- activatesOn: ClientEvents.SetupMigration,
121
- activate: () => contributes(ClientCapabilities.Migration, [DataType.MessageV1ToV2]),
122
- }),
123
- defineModule({
124
- id: `${meta.id}/module/on-space-created`,
125
- activatesOn: SpaceEvents.SpaceCreated,
126
- activate: () =>
127
- contributes(SpaceCapabilities.OnSpaceCreated, ({ space, rootCollection }) =>
128
- createIntent(ThreadAction.OnSpaceCreated, { space, rootCollection }),
129
- ),
130
- }),
131
- defineModule({
132
- id: `${meta.id}/module/markdown`,
133
- activatesOn: MarkdownEvents.SetupExtensions,
134
- activate: Markdown,
135
- }),
136
- defineModule({
137
- id: `${meta.id}/module/react-root`,
138
- activatesOn: Events.Startup,
139
- activate: ReactRoot,
140
- }),
141
- defineModule({
142
- id: `${meta.id}/module/react-surface`,
143
- activatesOn: Events.SetupReactSurface,
144
- activate: ReactSurface,
145
- }),
146
- defineModule({
147
- id: `${meta.id}/module/intent-resolver`,
148
- activatesOn: Events.SetupIntentResolver,
149
- activate: IntentResolver,
150
- }),
151
- defineModule({
152
- id: `${meta.id}/module/app-graph-builder`,
153
- activatesOn: Events.SetupAppGraph,
154
- activate: AppGraphBuilder,
155
- }),
156
- defineModule({
157
- id: `${meta.id}/module/toolkit`,
158
- // TODO(wittjosiah): Shouldn't use the startup event.
159
- activatesOn: Events.Startup,
160
- activate: Toolkit,
161
- }),
162
- ]);
101
+ },
102
+ }),
103
+ ],
104
+ }),
105
+ defineModule({
106
+ id: `${meta.id}/module/schema`,
107
+ activatesOn: ClientEvents.SetupSchema,
108
+ activate: () =>
109
+ contributes(ClientCapabilities.Schema, [
110
+ AnchoredTo.AnchoredTo,
111
+ Channel.Channel,
112
+ Message.Message,
113
+ Message.MessageV1,
114
+ Thread.Thread,
115
+ ]),
116
+ }),
117
+ defineModule({
118
+ id: `${meta.id}/module/migration`,
119
+ activatesOn: ClientEvents.SetupMigration,
120
+ activate: () => contributes(ClientCapabilities.Migration, [Message.MessageV1ToV2]),
121
+ }),
122
+ defineModule({
123
+ id: `${meta.id}/module/on-space-created`,
124
+ activatesOn: SpaceEvents.SpaceCreated,
125
+ activate: () =>
126
+ contributes(SpaceCapabilities.OnCreateSpace, (params) => createIntent(ThreadAction.OnCreateSpace, params)),
127
+ }),
128
+ defineModule({
129
+ id: `${meta.id}/module/repair`,
130
+ activatesOn: ClientEvents.SpacesReady,
131
+ activate: Repair,
132
+ }),
133
+ defineModule({
134
+ id: `${meta.id}/module/markdown`,
135
+ activatesOn: MarkdownEvents.SetupExtensions,
136
+ activate: Markdown,
137
+ }),
138
+ defineModule({
139
+ id: `${meta.id}/module/react-root`,
140
+ activatesOn: Events.Startup,
141
+ activate: ReactRoot,
142
+ }),
143
+ defineModule({
144
+ id: `${meta.id}/module/react-surface`,
145
+ activatesOn: Events.SetupReactSurface,
146
+ activate: ReactSurface,
147
+ }),
148
+ defineModule({
149
+ id: `${meta.id}/module/intent-resolver`,
150
+ activatesOn: Events.SetupIntentResolver,
151
+ activate: IntentResolver,
152
+ }),
153
+ defineModule({
154
+ id: `${meta.id}/module/app-graph-builder`,
155
+ activatesOn: Events.SetupAppGraph,
156
+ activate: AppGraphBuilder,
157
+ }),
158
+ defineModule({
159
+ id: `${meta.id}/module/blueprint`,
160
+ activatesOn: Events.SetupArtifactDefinition,
161
+ activate: BlueprintDefinition,
162
+ }),
163
+ ]);
@@ -210,7 +210,7 @@ export class CallManager extends Resource {
210
210
 
211
211
  private _onCallStateUpdated(state: CallState): void {
212
212
  const tracksToPull = state.users
213
- ?.filter((user) => user.joined && user.id !== state.self?.id)
213
+ ?.filter((user) => user.joined && user.id !== state.self!.id)
214
214
  ?.flatMap((user) => [user.tracks?.video, user.tracks?.audio, user.tracks?.screenshare])
215
215
  .filter(isNonNullable);
216
216
  this._mediaManager._schedulePullTracks(tracksToPull as EncodedTrackName[]);
@@ -59,9 +59,13 @@ const USE_INAUDIBLE_AUDIO = true;
59
59
 
60
60
  export class MediaManager extends Resource {
61
61
  public readonly stateUpdated = new Event<MediaState>();
62
- private readonly _state: MediaState = { pulledVideoStreams: {}, pulledAudioTracks: {} };
63
- private _speakingMonitor?: SpeakingMonitor = undefined;
64
62
 
63
+ private readonly _state: MediaState = {
64
+ pulledVideoStreams: {},
65
+ pulledAudioTracks: {},
66
+ };
67
+
68
+ private _speakingMonitor?: SpeakingMonitor = undefined;
65
69
  private _trackToReconcile: EncodedTrackName[] = [];
66
70
  private _blackCanvasStreamTrack?: MediaStreamTrack = undefined;
67
71
  private _inaudibleAudioStreamTrack?: MediaStreamTrack = undefined;
@@ -85,6 +89,7 @@ export class MediaManager extends Resource {
85
89
  width: VIDEO_WIDTH,
86
90
  height: VIDEO_HEIGHT,
87
91
  });
92
+
88
93
  this._state.videoTrack = this._blackCanvasStreamTrack;
89
94
  this._state.videoStream = new MediaStream();
90
95
  this._state.videoStream.addTrack(this._state.videoTrack);
@@ -137,6 +142,7 @@ export class MediaManager extends Resource {
137
142
  this._state.videoStream!.removeTrack(this._state.videoTrack!);
138
143
  this._state.videoTrack = await getUserMediaTrack('videoinput', { width: VIDEO_WIDTH, height: VIDEO_HEIGHT });
139
144
  this._state.videoStream!.addTrack(this._state.videoTrack);
145
+
140
146
  this._state.videoEnabled = true;
141
147
  this.stateUpdated.emit(this._state);
142
148
  this._pushTracksTask!.schedule();
@@ -226,7 +232,6 @@ export class MediaManager extends Resource {
226
232
  // Wait for cloudflare to process the track.
227
233
  await cancelWithContext(this._ctx, sleep(800));
228
234
  const trackNames = this._trackToReconcile;
229
-
230
235
  const tracksToPull = trackNames.filter(
231
236
  (name) => !this._state.pulledAudioTracks[name] && !this._state.pulledVideoStreams[name],
232
237
  );
@@ -258,8 +263,8 @@ export class MediaManager extends Resource {
258
263
  currentAudioTracks: Object.keys(this._state.pulledAudioTracks),
259
264
  currentVideoStreams: Object.keys(this._state.pulledVideoStreams),
260
265
  });
261
- this.stateUpdated.emit(this._state);
262
266
 
267
+ this.stateUpdated.emit(this._state);
263
268
  if (pullResults.some(({ shouldRetry }) => shouldRetry)) {
264
269
  await cancelWithContext(this._ctx, sleep(RETRY_INTERVAL));
265
270
  log.info('retrying pull tracks', { tracksToPull });
@@ -296,7 +301,6 @@ export class MediaManager extends Resource {
296
301
  }
297
302
 
298
303
  const shouldRetry = pushVideoResult.shouldRetry || pushAudioResult.shouldRetry || pushScreenshareResult.shouldRetry;
299
-
300
304
  if (updated) {
301
305
  this.stateUpdated.emit(this._state);
302
306
  }
@@ -313,7 +317,8 @@ export class MediaManager extends Resource {
313
317
  const ctx = this._ctx.derive();
314
318
  try {
315
319
  const trackData = TrackNameCodec.decode(name);
316
- const track = await this._state.peer!.pullTrack({ trackData, ctx });
320
+ // We need to set mid here to `undefined`, because mid is peer specific.
321
+ const track = await this._state.peer!.pullTrack({ trackData: { ...trackData, mid: undefined }, ctx });
317
322
  if (track?.readyState === 'ended') {
318
323
  throw new Error('Pulled track ended immediately');
319
324
  }
@@ -355,7 +360,6 @@ export class MediaManager extends Resource {
355
360
  }
356
361
 
357
362
  const ctx = this._ctx.derive();
358
-
359
363
  try {
360
364
  return {
361
365
  track: await this._state.peer!.pushTrack({
@@ -2,6 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { invariant } from '@dxos/invariant';
5
6
  import { buf } from '@dxos/protocols/buf';
6
7
  import {
7
8
  type ActivitySchema,
@@ -61,10 +62,13 @@ export type EncodedTrackName = string & { __brand: 'EncodedTrackName' };
61
62
 
62
63
  export const TrackNameCodec = {
63
64
  encode: (trackData: TrackObject): EncodedTrackName => {
64
- return (trackData.sessionId + '/' + trackData.trackName) as EncodedTrackName;
65
+ invariant(trackData.sessionId);
66
+ invariant(trackData.trackName);
67
+ invariant(trackData.mid);
68
+ return (trackData.sessionId + '/' + trackData.trackName + '/' + trackData.mid) as EncodedTrackName;
65
69
  },
66
70
  decode: (name: EncodedTrackName): TrackObject => {
67
- const [sessionId, trackName] = name.split('/');
68
- return { sessionId, trackName, location: 'remote' };
71
+ const [sessionId, trackName, mid] = name.split('/');
72
+ return { sessionId, trackName, location: 'remote', mid };
69
73
  },
70
74
  };
@@ -33,12 +33,14 @@ export type CallsServiceConfig = {
33
33
 
34
34
  export type HistoryRecord =
35
35
  | {
36
+ endpoint: string;
36
37
  type: 'request';
37
38
  time: string;
38
39
  method: string;
39
40
  body: any;
40
41
  }
41
42
  | {
43
+ endpoint: string;
42
44
  type: 'response';
43
45
  time: string;
44
46
  status: number;
@@ -116,7 +118,7 @@ export class CallsServicePeer extends Resource {
116
118
  });
117
119
  peerConnection.addEventListener('connectionstatechange', () => {
118
120
  if (peerConnection.connectionState === 'failed' || peerConnection.connectionState === 'closed') {
119
- log.warn('calls connection failed', { state: peerConnection.connectionState });
121
+ log.info('calls connection failed', { state: peerConnection.connectionState });
120
122
  void this._persistentLifecycle.scheduleRestart();
121
123
  }
122
124
  });
@@ -125,7 +127,7 @@ export class CallsServicePeer extends Resource {
125
127
  peerConnection.addEventListener('iceconnectionstatechange', () => {
126
128
  clearTimeout(iceTimeout);
127
129
  if (peerConnection.iceConnectionState === 'failed' || peerConnection.iceConnectionState === 'closed') {
128
- log.warn('calls connection to ICEs failed', { state: peerConnection.iceConnectionState });
130
+ log.info('calls connection to ICEs failed', { state: peerConnection.iceConnectionState });
129
131
  void this._persistentLifecycle.scheduleRestart();
130
132
  } else if (peerConnection.iceConnectionState === 'disconnected') {
131
133
  // TODO(mykola): we should start to inspect the connection stats from here on for
@@ -138,7 +140,7 @@ export class CallsServicePeer extends Resource {
138
140
  return;
139
141
  }
140
142
 
141
- log.warn('calls iceConnectionState timed out', { state: peerConnection.iceConnectionState, timeoutSeconds });
143
+ log.info('calls iceConnectionState timed out', { state: peerConnection.iceConnectionState, timeoutSeconds });
142
144
  void this._persistentLifecycle.scheduleRestart();
143
145
  }, timeoutSeconds * 1_000);
144
146
  }
@@ -155,6 +157,7 @@ export class CallsServicePeer extends Resource {
155
157
 
156
158
  private async _fetch<T extends ErrorResponse>(relativePath: string, requestInit?: RequestInit): Promise<T> {
157
159
  this.history.push({
160
+ endpoint: relativePath,
158
161
  type: 'request',
159
162
  time: new Date().toISOString(),
160
163
  method: requestInit?.method ?? 'GET',
@@ -170,6 +173,7 @@ export class CallsServicePeer extends Resource {
170
173
  try {
171
174
  const data = (await response.clone().json()) as T;
172
175
  this.history.push({
176
+ endpoint: relativePath,
173
177
  type: 'response',
174
178
  time: new Date().toISOString(),
175
179
  status: response.status,
@@ -183,6 +187,7 @@ export class CallsServicePeer extends Resource {
183
187
  } catch (error) {
184
188
  const text = await response.text();
185
189
  this.history.push({
190
+ endpoint: relativePath,
186
191
  type: 'response',
187
192
  time: new Date().toISOString(),
188
193
  status: response.status,
@@ -252,7 +257,7 @@ export class CallsServicePeer extends Resource {
252
257
  // we wait for the transceiver to start sending data before we emit
253
258
  // the track metadata to ensure that the track will be able to be
254
259
  // pulled before making the metadata available to anyone else.
255
- await waitForTransceiverToSendData(ctx, transceiver);
260
+ // await waitForTransceiverToSendData(ctx, transceiver);
256
261
  return {
257
262
  ...trackData,
258
263
  sessionId,
@@ -406,7 +411,7 @@ export class CallsServicePeer extends Resource {
406
411
  })
407
412
  .catch((err) => log.catch(err));
408
413
  } else {
409
- log.warn('missing track info', { trackData, availableTracks: Array.from(trackMap.keys()) });
414
+ log.info('missing track info', { trackData, availableTracks: Array.from(trackMap.keys()) });
410
415
  }
411
416
  });
412
417
 
@@ -533,8 +538,8 @@ const peerConnectionIsConnected = async (peerConnection: RTCPeerConnection) => {
533
538
 
534
539
  const INITIAL_DELAY = 50;
535
540
  const MAX_DELAY = 500;
536
- const MAX_RETRIES = 50;
537
- const WAIT_FOR_DATA_TIMEOUT = 20_000;
541
+ const MAX_RETRIES = 20;
542
+ const WAIT_FOR_DATA_TIMEOUT = 10_000;
538
543
 
539
544
  const waitForTransceiverToSendData = async (ctx: Context, transceiver: RTCRtpTransceiver): Promise<void> => {
540
545
  let delay = INITIAL_DELAY;