@dxos/plugin-thread 0.8.4-main.67995b8 → 0.8.4-main.ae835ea

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 (302) hide show
  1. package/dist/lib/browser/ChannelContainer-SVV4ZX5T.mjs +16 -0
  2. package/dist/lib/browser/ChatContainer-ALFWQ65B.mjs +15 -0
  3. package/dist/lib/browser/{app-graph-builder-N7BE5TYW.mjs → app-graph-builder-ACBXRBOS.mjs} +22 -22
  4. package/dist/lib/browser/app-graph-builder-ACBXRBOS.mjs.map +7 -0
  5. package/dist/lib/browser/{call-manager-NIPDYUVD.mjs → call-manager-P3MYR2JS.mjs} +7 -7
  6. package/dist/lib/browser/call-manager-P3MYR2JS.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-6CUDBEYP.mjs +377 -0
  8. package/dist/lib/browser/chunk-6CUDBEYP.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-BBTXGRIR.mjs +18 -0
  10. package/dist/lib/browser/chunk-BBTXGRIR.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-GERVMFQW.mjs → chunk-CP7E2HRE.mjs} +2 -2
  12. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-KWPRNHTK.mjs → chunk-DJOUMWEL.mjs} +242 -238
  14. package/dist/lib/browser/chunk-DJOUMWEL.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-ERWASUQK.mjs → chunk-HDEQRBOC.mjs} +38 -6
  16. package/dist/lib/{node-esm/chunk-25ABSYP2.mjs.map → browser/chunk-HDEQRBOC.mjs.map} +4 -4
  17. package/dist/lib/browser/chunk-IQSXEHOW.mjs +618 -0
  18. package/dist/lib/browser/chunk-IQSXEHOW.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-K2DUJRFJ.mjs +27 -0
  20. package/dist/lib/browser/chunk-K2DUJRFJ.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-L6F2AG6W.mjs +23 -0
  22. package/dist/lib/browser/{chunk-FR7KJPNY.mjs.map → chunk-L6F2AG6W.mjs.map} +3 -3
  23. package/dist/lib/browser/{chunk-ZE7KWN36.mjs → chunk-US5ZQYC3.mjs} +310 -186
  24. package/dist/lib/browser/chunk-US5ZQYC3.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-UTSLSZED.mjs +178 -0
  26. package/dist/lib/browser/chunk-UTSLSZED.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-6NSMBO3B.mjs → chunk-XYUJXHYV.mjs} +55 -5
  28. package/dist/lib/browser/chunk-XYUJXHYV.mjs.map +7 -0
  29. package/dist/lib/browser/index.mjs +35 -24
  30. package/dist/lib/browser/index.mjs.map +3 -3
  31. package/dist/lib/browser/{intent-resolver-JFGLZ6VI.mjs → intent-resolver-5POQTZ24.mjs} +83 -33
  32. package/dist/lib/browser/intent-resolver-5POQTZ24.mjs.map +7 -0
  33. package/dist/lib/browser/{markdown-M3FMR7OD.mjs → markdown-L7LDNF56.mjs} +10 -10
  34. package/dist/lib/browser/markdown-L7LDNF56.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/react-root-RCJLK4EP.mjs +28 -0
  37. package/dist/lib/browser/react-root-RCJLK4EP.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-XWS6GIZY.mjs → react-surface-IC576W2W.mjs} +27 -27
  39. package/dist/lib/browser/react-surface-IC576W2W.mjs.map +7 -0
  40. package/dist/lib/browser/{settings-E32MTL7A.mjs → settings-5FYGBOGI.mjs} +5 -5
  41. package/dist/lib/browser/{settings-E32MTL7A.mjs.map → settings-5FYGBOGI.mjs.map} +1 -1
  42. package/dist/lib/browser/{state-H6CYONWE.mjs → state-36REWXO5.mjs} +5 -5
  43. package/dist/lib/browser/state-36REWXO5.mjs.map +7 -0
  44. package/dist/lib/browser/toolkit-PXASLYEQ.mjs +74 -0
  45. package/dist/lib/browser/toolkit-PXASLYEQ.mjs.map +7 -0
  46. package/dist/lib/browser/types/index.mjs +7 -9
  47. package/dist/lib/node-esm/ChannelContainer-63GMQ753.mjs +17 -0
  48. package/dist/lib/node-esm/{ChatContainer-IQUWU426.mjs → ChatContainer-MFKPXMIK.mjs} +6 -6
  49. package/dist/lib/node-esm/{app-graph-builder-VCW76Z6V.mjs → app-graph-builder-JXD7KY3G.mjs} +22 -22
  50. package/dist/lib/node-esm/app-graph-builder-JXD7KY3G.mjs.map +7 -0
  51. package/dist/lib/node-esm/{call-manager-D6O5ZJJ4.mjs → call-manager-FCEFP7EJ.mjs} +7 -7
  52. package/dist/lib/node-esm/call-manager-FCEFP7EJ.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-25ABSYP2.mjs → chunk-2MMJF7DW.mjs} +38 -6
  54. package/dist/lib/node-esm/chunk-2MMJF7DW.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-OU5BYIDO.mjs → chunk-2V3WSLUZ.mjs} +55 -5
  56. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-57XR3LEF.mjs → chunk-ABUFOZVX.mjs} +2 -2
  58. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-AFDO2SUZ.mjs +25 -0
  60. package/dist/lib/node-esm/{chunk-2CXOK2TD.mjs.map → chunk-AFDO2SUZ.mjs.map} +3 -3
  61. package/dist/lib/node-esm/{chunk-IHDNQLLR.mjs → chunk-KGYDYYKJ.mjs} +310 -186
  62. package/dist/lib/node-esm/chunk-KGYDYYKJ.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-NWUUMKVQ.mjs +378 -0
  64. package/dist/lib/node-esm/chunk-NWUUMKVQ.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-Q7AKKZNY.mjs +619 -0
  66. package/dist/lib/node-esm/chunk-Q7AKKZNY.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-C3XFMUAY.mjs → chunk-QCQAAU6J.mjs} +242 -238
  68. package/dist/lib/node-esm/chunk-QCQAAU6J.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-TYLLHI46.mjs +179 -0
  70. package/dist/lib/node-esm/chunk-TYLLHI46.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-XI45H4IV.mjs +28 -0
  72. package/dist/lib/node-esm/chunk-XI45H4IV.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs +19 -0
  74. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs.map +7 -0
  75. package/dist/lib/node-esm/index.mjs +35 -24
  76. package/dist/lib/node-esm/index.mjs.map +3 -3
  77. package/dist/lib/node-esm/{intent-resolver-OXGNQ44Y.mjs → intent-resolver-63NV3XD2.mjs} +83 -33
  78. package/dist/lib/node-esm/intent-resolver-63NV3XD2.mjs.map +7 -0
  79. package/dist/lib/node-esm/{markdown-INKTE4MH.mjs → markdown-ZQW7MI5U.mjs} +10 -10
  80. package/dist/lib/node-esm/markdown-ZQW7MI5U.mjs.map +7 -0
  81. package/dist/lib/node-esm/meta.json +1 -1
  82. package/dist/lib/node-esm/react-root-4IDB2SN2.mjs +29 -0
  83. package/dist/lib/node-esm/react-root-4IDB2SN2.mjs.map +7 -0
  84. package/dist/lib/node-esm/{react-surface-MJ33KPYE.mjs → react-surface-O4LGTAZ3.mjs} +27 -27
  85. package/dist/lib/node-esm/react-surface-O4LGTAZ3.mjs.map +7 -0
  86. package/dist/lib/node-esm/{settings-SJ24YG7M.mjs → settings-EOBQUZSW.mjs} +5 -5
  87. package/dist/lib/node-esm/{settings-SJ24YG7M.mjs.map → settings-EOBQUZSW.mjs.map} +1 -1
  88. package/dist/lib/node-esm/{state-D7WNDT3N.mjs → state-X3W67GTL.mjs} +5 -5
  89. package/dist/lib/node-esm/state-X3W67GTL.mjs.map +7 -0
  90. package/dist/lib/node-esm/toolkit-X2KA4FNC.mjs +75 -0
  91. package/dist/lib/node-esm/toolkit-X2KA4FNC.mjs.map +7 -0
  92. package/dist/lib/node-esm/types/index.mjs +7 -9
  93. package/dist/types/src/ThreadPlugin.d.ts +1 -1
  94. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  95. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  96. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  97. package/dist/types/src/calls/media-manager.d.ts +1 -1
  98. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  99. package/dist/types/src/calls/types.d.ts +1 -1
  100. package/dist/types/src/calls/types.d.ts.map +1 -1
  101. package/dist/types/src/calls/util/calls-service.d.ts +4 -2
  102. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  103. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  104. package/dist/types/src/calls-service.stories.d.ts +10 -9
  105. package/dist/types/src/calls-service.stories.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  107. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/call-manager.d.ts +1 -1
  109. package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/capabilities.d.ts +3 -3
  111. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/index.d.ts +11 -10
  113. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  115. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/markdown.d.ts +1 -1
  117. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  118. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  119. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  120. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  121. package/dist/types/src/capabilities/settings.d.ts +1 -1
  122. package/dist/types/src/capabilities/state.d.ts +2 -2
  123. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  124. package/dist/types/src/capabilities/toolkit.d.ts +24 -0
  125. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  126. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  127. package/dist/types/src/components/Call/Toolbar.d.ts +2 -2
  128. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  129. package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
  130. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
  131. package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
  132. package/dist/types/src/components/ChannelContainer.d.ts +2 -2
  133. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  134. package/dist/types/src/components/ChannelContainer.stories.d.ts +155 -5
  135. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/Chat.stories.d.ts +158 -5
  137. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/ChatContainer.d.ts +6 -5
  139. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  140. package/dist/types/src/components/Comments.stories.d.ts +156 -4
  141. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  142. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  143. package/dist/types/src/components/CommentsThreadContainer.d.ts +2 -2
  144. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
  145. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  146. package/dist/types/src/components/Media/VideoObject.d.ts +2 -2
  147. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
  148. package/dist/types/src/components/Media/VideoObject.stories.d.ts +18 -4
  149. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  150. package/dist/types/src/components/MessageContainer.d.ts +4 -1
  151. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  152. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  153. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
  154. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +155 -3
  155. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  156. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +157 -4
  157. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  158. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  159. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  160. package/dist/types/src/components/ThreadSettings.d.ts +1 -1
  161. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  162. package/dist/types/src/components/command-extension.d.ts.map +1 -1
  163. package/dist/types/src/components/index.d.ts +1 -1
  164. package/dist/types/src/components/index.d.ts.map +1 -1
  165. package/dist/types/src/components/testing.d.ts +3 -2
  166. package/dist/types/src/components/testing.d.ts.map +1 -1
  167. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  168. package/dist/types/src/hooks/index.d.ts +1 -0
  169. package/dist/types/src/hooks/index.d.ts.map +1 -1
  170. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
  171. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
  172. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +1 -1
  173. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -1
  174. package/dist/types/src/meta.d.ts +1 -2
  175. package/dist/types/src/meta.d.ts.map +1 -1
  176. package/dist/types/src/testing/stories.d.ts.map +1 -1
  177. package/dist/types/src/translations.d.ts +74 -6
  178. package/dist/types/src/translations.d.ts.map +1 -1
  179. package/dist/types/src/types/Channel.d.ts +16 -0
  180. package/dist/types/src/types/Channel.d.ts.map +1 -0
  181. package/dist/types/src/types/Thread.d.ts +167 -0
  182. package/dist/types/src/types/Thread.d.ts.map +1 -0
  183. package/dist/types/src/types/index.d.ts +2 -1
  184. package/dist/types/src/types/index.d.ts.map +1 -1
  185. package/dist/types/src/types/types.d.ts +278 -206
  186. package/dist/types/src/types/types.d.ts.map +1 -1
  187. package/dist/types/tsconfig.tsbuildinfo +1 -1
  188. package/package.json +64 -62
  189. package/src/ThreadPlugin.tsx +136 -126
  190. package/src/calls/call-manager.ts +2 -2
  191. package/src/calls/call-swarm-synchronizer.ts +1 -1
  192. package/src/calls/media-manager.ts +60 -34
  193. package/src/calls/types.ts +8 -4
  194. package/src/calls/util/calls-service.ts +65 -14
  195. package/src/calls/util/stub-media-streams.ts +62 -5
  196. package/src/calls-service.stories.tsx +78 -65
  197. package/src/capabilities/app-graph-builder.ts +24 -18
  198. package/src/capabilities/call-manager.ts +3 -2
  199. package/src/capabilities/capabilities.ts +8 -8
  200. package/src/capabilities/index.ts +1 -0
  201. package/src/capabilities/intent-resolver.ts +50 -20
  202. package/src/capabilities/markdown.ts +4 -3
  203. package/src/capabilities/react-root.tsx +2 -2
  204. package/src/capabilities/react-surface.tsx +19 -18
  205. package/src/capabilities/state.ts +2 -1
  206. package/src/capabilities/toolkit.ts +85 -0
  207. package/src/components/Call/Call.tsx +3 -2
  208. package/src/components/Call/Toolbar.tsx +7 -7
  209. package/src/components/CallDebugPanel.tsx +108 -49
  210. package/src/components/CallSidebar.tsx +2 -1
  211. package/src/components/ChannelContainer.stories.tsx +14 -13
  212. package/src/components/ChannelContainer.tsx +20 -16
  213. package/src/components/Chat.stories.tsx +32 -35
  214. package/src/components/ChatContainer.tsx +33 -20
  215. package/src/components/Comments.stories.tsx +38 -39
  216. package/src/components/CommentsContainer.tsx +4 -3
  217. package/src/components/CommentsThreadContainer.tsx +28 -21
  218. package/src/components/Lobby/Lobby.tsx +1 -1
  219. package/src/components/Media/VideoObject.stories.tsx +36 -28
  220. package/src/components/MessageContainer.tsx +43 -9
  221. package/src/components/Participant/Participant.tsx +13 -7
  222. package/src/components/Participant/ParticipantGrid.tsx +2 -1
  223. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +8 -8
  224. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +44 -42
  225. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +1 -1
  226. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +2 -2
  227. package/src/components/ThreadComplementary.tsx +42 -12
  228. package/src/components/ThreadSettings.tsx +6 -7
  229. package/src/components/command-extension.ts +5 -2
  230. package/src/components/testing.ts +25 -3
  231. package/src/extensions/threads.ts +7 -7
  232. package/src/hooks/index.ts +1 -0
  233. package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
  234. package/src/hooks/useDebugMode.ts +1 -1
  235. package/src/hooks/useVideoStreamTrack.tsx +6 -3
  236. package/src/meta.ts +9 -5
  237. package/src/testing/stories.ts +5 -8
  238. package/src/translations.ts +6 -3
  239. package/src/types/Channel.ts +27 -0
  240. package/src/types/Thread.ts +26 -0
  241. package/src/types/index.ts +2 -1
  242. package/src/types/types.ts +30 -20
  243. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  244. package/src/typings.d.ts +8 -0
  245. package/src/util.ts +1 -1
  246. package/dist/lib/browser/ChannelContainer-3GIE7ASU.mjs +0 -16
  247. package/dist/lib/browser/ChatContainer-AIGIWAUG.mjs +0 -15
  248. package/dist/lib/browser/app-graph-builder-N7BE5TYW.mjs.map +0 -7
  249. package/dist/lib/browser/call-manager-NIPDYUVD.mjs.map +0 -7
  250. package/dist/lib/browser/chunk-3SGRT4NM.mjs +0 -367
  251. package/dist/lib/browser/chunk-3SGRT4NM.mjs.map +0 -7
  252. package/dist/lib/browser/chunk-6NSMBO3B.mjs.map +0 -7
  253. package/dist/lib/browser/chunk-ERWASUQK.mjs.map +0 -7
  254. package/dist/lib/browser/chunk-EV4JWI7L.mjs +0 -17
  255. package/dist/lib/browser/chunk-EV4JWI7L.mjs.map +0 -7
  256. package/dist/lib/browser/chunk-FR7KJPNY.mjs +0 -21
  257. package/dist/lib/browser/chunk-GCLD5ESP.mjs +0 -137
  258. package/dist/lib/browser/chunk-GCLD5ESP.mjs.map +0 -7
  259. package/dist/lib/browser/chunk-GERVMFQW.mjs.map +0 -7
  260. package/dist/lib/browser/chunk-KWPRNHTK.mjs.map +0 -7
  261. package/dist/lib/browser/chunk-LGSDKXPF.mjs +0 -18
  262. package/dist/lib/browser/chunk-LGSDKXPF.mjs.map +0 -7
  263. package/dist/lib/browser/chunk-VUWC4IJM.mjs +0 -479
  264. package/dist/lib/browser/chunk-VUWC4IJM.mjs.map +0 -7
  265. package/dist/lib/browser/chunk-ZE7KWN36.mjs.map +0 -7
  266. package/dist/lib/browser/intent-resolver-JFGLZ6VI.mjs.map +0 -7
  267. package/dist/lib/browser/markdown-M3FMR7OD.mjs.map +0 -7
  268. package/dist/lib/browser/react-root-JEUSQXI6.mjs +0 -28
  269. package/dist/lib/browser/react-root-JEUSQXI6.mjs.map +0 -7
  270. package/dist/lib/browser/react-surface-XWS6GIZY.mjs.map +0 -7
  271. package/dist/lib/browser/state-H6CYONWE.mjs.map +0 -7
  272. package/dist/lib/node-esm/ChannelContainer-7FXCKO7X.mjs +0 -17
  273. package/dist/lib/node-esm/app-graph-builder-VCW76Z6V.mjs.map +0 -7
  274. package/dist/lib/node-esm/call-manager-D6O5ZJJ4.mjs.map +0 -7
  275. package/dist/lib/node-esm/chunk-2CXOK2TD.mjs +0 -23
  276. package/dist/lib/node-esm/chunk-2MFNK53T.mjs +0 -480
  277. package/dist/lib/node-esm/chunk-2MFNK53T.mjs.map +0 -7
  278. package/dist/lib/node-esm/chunk-57XR3LEF.mjs.map +0 -7
  279. package/dist/lib/node-esm/chunk-75RJ5DJI.mjs +0 -19
  280. package/dist/lib/node-esm/chunk-75RJ5DJI.mjs.map +0 -7
  281. package/dist/lib/node-esm/chunk-C3XFMUAY.mjs.map +0 -7
  282. package/dist/lib/node-esm/chunk-FLBFYGBK.mjs +0 -368
  283. package/dist/lib/node-esm/chunk-FLBFYGBK.mjs.map +0 -7
  284. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs +0 -19
  285. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs.map +0 -7
  286. package/dist/lib/node-esm/chunk-IHDNQLLR.mjs.map +0 -7
  287. package/dist/lib/node-esm/chunk-OU5BYIDO.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-TDFHTCZZ.mjs +0 -138
  289. package/dist/lib/node-esm/chunk-TDFHTCZZ.mjs.map +0 -7
  290. package/dist/lib/node-esm/intent-resolver-OXGNQ44Y.mjs.map +0 -7
  291. package/dist/lib/node-esm/markdown-INKTE4MH.mjs.map +0 -7
  292. package/dist/lib/node-esm/react-root-XYYY2JXZ.mjs +0 -29
  293. package/dist/lib/node-esm/react-root-XYYY2JXZ.mjs.map +0 -7
  294. package/dist/lib/node-esm/react-surface-MJ33KPYE.mjs.map +0 -7
  295. package/dist/lib/node-esm/state-D7WNDT3N.mjs.map +0 -7
  296. package/dist/types/src/types/schema.d.ts +0 -162
  297. package/dist/types/src/types/schema.d.ts.map +0 -1
  298. package/src/types/schema.ts +0 -33
  299. /package/dist/lib/browser/{ChannelContainer-3GIE7ASU.mjs.map → ChannelContainer-SVV4ZX5T.mjs.map} +0 -0
  300. /package/dist/lib/browser/{ChatContainer-AIGIWAUG.mjs.map → ChatContainer-ALFWQ65B.mjs.map} +0 -0
  301. /package/dist/lib/node-esm/{ChannelContainer-7FXCKO7X.mjs.map → ChannelContainer-63GMQ753.mjs.map} +0 -0
  302. /package/dist/lib/node-esm/{ChatContainer-IQUWU426.mjs.map → ChatContainer-MFKPXMIK.mjs.map} +0 -0
@@ -4,7 +4,7 @@
4
4
 
5
5
  import { type RefObject, useEffect, useRef, useState } from 'react';
6
6
 
7
- export const useVideoStreamTrack = (videoElement: RefObject<HTMLVideoElement>, videoSrc: string) => {
7
+ export const useVideoStreamTrack = (videoElement: RefObject<HTMLVideoElement | null>, videoSrc: string) => {
8
8
  // Get video stream track.
9
9
  const [videoStreamTrack, setVideoStreamTrack] = useState<MediaStreamTrack | undefined>(undefined);
10
10
  const hadRun = useRef(false);
@@ -15,13 +15,16 @@ export const useVideoStreamTrack = (videoElement: RefObject<HTMLVideoElement>, v
15
15
  }
16
16
  hadRun.current = true;
17
17
  videoElement.current.addEventListener('playing', () => {
18
+ if (videoStreamTrack) {
19
+ return;
20
+ }
18
21
  const stream = (videoElement.current as any).captureStream();
19
22
  const track = stream.getTracks()[0];
20
- if (track) {
23
+ if (track && !videoStreamTrack) {
21
24
  setVideoStreamTrack(track);
22
25
  }
23
26
  stream.onaddtrack = (event: MediaStreamTrackEvent) => {
24
- if (event.track.kind === 'video') {
27
+ if (event.track.kind === 'video' && !videoStreamTrack) {
25
28
  setVideoStreamTrack(event.track);
26
29
  }
27
30
  };
package/src/meta.ts CHANGED
@@ -3,15 +3,19 @@
3
3
  //
4
4
 
5
5
  import { type PluginMeta } from '@dxos/app-framework';
6
-
7
- export const THREAD_PLUGIN = 'dxos.org/plugin/thread';
8
- export const THREAD_ITEM = `${THREAD_PLUGIN}/item`;
6
+ import { trim } from '@dxos/util';
9
7
 
10
8
  // TODO(wittjosiah): Needs screenshots.
11
9
  export const meta: PluginMeta = {
12
- id: THREAD_PLUGIN,
10
+ id: 'dxos.org/plugin/thread',
13
11
  name: 'Chat',
14
- description: 'Chat via text, voice, and video in channels or create comment threads on objects.',
12
+ description: trim`
13
+ Multi-modal communication platform supporting text chat, voice, and video conferencing.
14
+ Create threaded conversations and add contextual comments directly on any workspace object.
15
+ `,
15
16
  icon: 'ph--video-conference--regular',
17
+ iconHue: 'rose',
16
18
  source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-thread',
17
19
  };
20
+
21
+ export const THREAD_ITEM = `${meta.id}/item`;
@@ -3,28 +3,25 @@
3
3
  //
4
4
 
5
5
  import { IntentPlugin, SettingsPlugin } from '@dxos/app-framework';
6
- import { Obj } from '@dxos/echo';
7
6
  import { ClientPlugin } from '@dxos/plugin-client';
8
7
  import { GraphPlugin } from '@dxos/plugin-graph';
9
8
  import { SpacePlugin } from '@dxos/plugin-space';
10
9
  import { ThemePlugin } from '@dxos/plugin-theme';
11
10
  import { Config } from '@dxos/react-client';
12
- import { Ref } from '@dxos/react-client/echo';
13
11
  import { defaultTx } from '@dxos/react-ui-theme';
14
12
 
15
13
  import { ThreadPlugin } from '../ThreadPlugin';
16
- import { ChannelType, ThreadType } from '../types';
14
+ import { Channel } from '../types';
17
15
 
18
16
  export const createThreadPlugins = async () => [
19
17
  ThemePlugin({ tx: defaultTx }),
20
18
  ClientPlugin({
21
- onClientInitialized: async (_, client) => {
19
+ onClientInitialized: async ({ client }) => {
22
20
  await client.halo.createIdentity({ displayName: 'Test User' });
23
21
  },
24
- onSpacesReady: async (_, client) => {
22
+ onSpacesReady: async ({ client }) => {
25
23
  await client.spaces.default.waitUntilReady();
26
- const thread = Obj.make(ThreadType, { messages: [] });
27
- client.spaces.default.db.add(Obj.make(ChannelType, { defaultThread: Ref.make(thread), threads: [] }));
24
+ client.spaces.default.db.add(Channel.make());
28
25
  },
29
26
  config: new Config({
30
27
  runtime: {
@@ -46,7 +43,7 @@ export const createThreadPlugins = async () => [
46
43
  },
47
44
  }),
48
45
  }),
49
- SpacePlugin(),
46
+ SpacePlugin({}),
50
47
  IntentPlugin(),
51
48
  SettingsPlugin(),
52
49
  GraphPlugin(),
@@ -2,15 +2,16 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { Type } from '@dxos/echo';
5
6
  import { type Resource } from '@dxos/react-ui';
6
7
 
7
8
  import { meta } from './meta';
8
- import { ChannelType } from './types';
9
+ import { Channel } from './types';
9
10
 
10
11
  export const translations = [
11
12
  {
12
13
  'en-US': {
13
- [ChannelType.typename]: {
14
+ [Type.getTypename(Channel.Channel)]: {
14
15
  'typename label': 'Channel',
15
16
  'typename label_zero': 'Channels',
16
17
  'typename label_one': 'Channel',
@@ -44,6 +45,7 @@ export const translations = [
44
45
  'save message label': 'Save',
45
46
  'edit message label': 'Edit',
46
47
  'delete message label': 'Delete message',
48
+ 'accept proposal label': 'Accept proposal',
47
49
  'open comments panel label': 'Show Comments',
48
50
  'comments label': 'Comments',
49
51
  'show all label': 'All comments',
@@ -60,7 +62,8 @@ export const translations = [
60
62
  'call tab label': 'Call',
61
63
  'meeting status title': 'Meeting',
62
64
  'share meeting link label': 'Share meeting',
63
- 'show webrtc stats title': 'Detailed WebRTC Stats',
65
+ 'show webrtc stats title': 'WebRTC Stats',
66
+ 'show calls history title': 'Service History',
64
67
 
65
68
  'meeting summary label': 'Summary',
66
69
  'summarize label': 'Summarize',
@@ -0,0 +1,27 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Schema from 'effect/Schema';
6
+
7
+ import { Obj, Ref, Type } from '@dxos/echo';
8
+ import { FormAnnotation } from '@dxos/echo/internal';
9
+
10
+ import * as Thread from './Thread';
11
+
12
+ const _Channel = Schema.Struct({
13
+ name: Schema.optional(Schema.String),
14
+ defaultThread: Type.Ref(Thread.Thread).pipe(FormAnnotation.set(false)),
15
+ // TODO(wittjosiah): Should be an "ordered collection".
16
+ threads: Type.Ref(Thread.Thread).pipe(Schema.Array, Schema.mutable, FormAnnotation.set(false)),
17
+ }).pipe(Type.Obj({ typename: 'dxos.org/type/Channel', version: '0.1.0' }));
18
+ export interface Channel extends Schema.Schema.Type<typeof _Channel> {}
19
+ export interface ChannelEncoded extends Schema.Schema.Encoded<typeof _Channel> {}
20
+ export const Channel: Schema.Schema<Channel, ChannelEncoded> = _Channel;
21
+
22
+ export const make = (props: Pick<Obj.MakeProps<typeof Channel>, 'name'> = {}) =>
23
+ Obj.make(Channel, {
24
+ ...props,
25
+ defaultThread: Ref.make(Obj.make(Thread.Thread, { messages: [], status: 'active' })),
26
+ threads: [],
27
+ });
@@ -0,0 +1,26 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Schema from 'effect/Schema';
6
+
7
+ import { Obj, Type } from '@dxos/echo';
8
+ import { DataType } from '@dxos/schema';
9
+
10
+ export const ThreadStatus = Schema.Union(
11
+ Schema.Literal('staged'),
12
+ Schema.Literal('active'),
13
+ Schema.Literal('resolved'),
14
+ );
15
+
16
+ const _Thread = Schema.Struct({
17
+ name: Schema.String.pipe(Schema.optional),
18
+ status: ThreadStatus.pipe(Schema.optional),
19
+ messages: Schema.mutable(Schema.Array(Type.Ref(DataType.Message))),
20
+ }).pipe(Type.Obj({ typename: 'dxos.org/type/Thread', version: '0.1.0' }));
21
+ export interface Thread extends Schema.Schema.Type<typeof _Thread> {}
22
+ export interface ThreadEncoded extends Schema.Schema.Encoded<typeof _Thread> {}
23
+ export const Thread: Schema.Schema<Thread, ThreadEncoded> = _Thread;
24
+
25
+ export const make = ({ status = 'staged', messages = [], ...props }: Partial<Obj.MakeProps<typeof Thread>> = {}) =>
26
+ Obj.make(Thread, { status, messages, ...props });
@@ -2,5 +2,6 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- export * from './schema';
5
+ export * as Channel from './Channel';
6
+ export * as Thread from './Thread';
6
7
  export * from './types';
@@ -2,19 +2,19 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import * as Schema from 'effect/Schema';
6
6
 
7
7
  import { Type } from '@dxos/echo';
8
8
  import { EchoObjectSchema, SpaceSchema } from '@dxos/react-client/echo';
9
9
  import { AnchoredTo, DataType } from '@dxos/schema';
10
10
 
11
- import { ChannelType, ThreadType } from './schema';
12
- import { THREAD_PLUGIN } from '../meta';
11
+ import { meta } from '../meta';
13
12
 
14
- export namespace ThreadAction {
15
- const THREAD_ACTION = `${THREAD_PLUGIN}/action`;
13
+ import * as Channel from './Channel';
14
+ import * as Thread from './Thread';
16
15
 
17
- export class OnSpaceCreated extends Schema.TaggedClass<OnSpaceCreated>()(`${THREAD_ACTION}/on-space-created`, {
16
+ export namespace ThreadAction {
17
+ export class onCreateSpace extends Schema.TaggedClass<onCreateSpace>()(`${meta.id}/action/on-space-created`, {
18
18
  input: Schema.Struct({
19
19
  space: SpaceSchema,
20
20
  rootCollection: DataType.Collection,
@@ -22,29 +22,29 @@ export namespace ThreadAction {
22
22
  output: Schema.Void,
23
23
  }) {}
24
24
 
25
- export class CreateChannel extends Schema.TaggedClass<CreateChannel>()(`${THREAD_ACTION}/create-channel`, {
25
+ export class CreateChannel extends Schema.TaggedClass<CreateChannel>()(`${meta.id}/action/create-channel`, {
26
26
  input: Schema.Struct({
27
27
  spaceId: Type.SpaceId,
28
28
  name: Schema.optional(Schema.String),
29
29
  }),
30
30
  output: Schema.Struct({
31
- object: ChannelType,
31
+ object: Channel.Channel,
32
32
  }),
33
33
  }) {}
34
34
 
35
35
  export class CreateChannelThread extends Schema.TaggedClass<CreateChannelThread>()(
36
- `${THREAD_ACTION}/create-channel-thread`,
36
+ `${meta.id}/action/create-channel-thread`,
37
37
  {
38
38
  input: Schema.Struct({
39
- channel: ChannelType,
39
+ channel: Channel.Channel,
40
40
  }),
41
41
  output: Schema.Struct({
42
- object: ThreadType,
42
+ object: Thread.Thread,
43
43
  }),
44
44
  },
45
45
  ) {}
46
46
 
47
- export class Create extends Schema.TaggedClass<Create>()(`${THREAD_ACTION}/create`, {
47
+ export class Create extends Schema.TaggedClass<Create>()(`${meta.id}/action/create`, {
48
48
  input: Schema.Struct({
49
49
  name: Schema.optional(Schema.String),
50
50
  anchor: Schema.optional(Schema.String),
@@ -53,30 +53,40 @@ export namespace ThreadAction {
53
53
  output: Schema.Void,
54
54
  }) {}
55
55
 
56
- export class Delete extends Schema.TaggedClass<Delete>()(`${THREAD_ACTION}/delete`, {
56
+ export class Delete extends Schema.TaggedClass<Delete>()(`${meta.id}/action/delete`, {
57
57
  input: Schema.Struct({
58
58
  anchor: AnchoredTo,
59
59
  subject: EchoObjectSchema,
60
- thread: Schema.optional(ThreadType),
60
+ thread: Schema.optional(Thread.Thread),
61
61
  }),
62
62
  output: Schema.Void,
63
63
  }) {}
64
64
 
65
- export class Select extends Schema.TaggedClass<Select>()(`${THREAD_ACTION}/select`, {
65
+ export class Select extends Schema.TaggedClass<Select>()(`${meta.id}/action/select`, {
66
66
  input: Schema.Struct({
67
67
  current: Schema.String,
68
68
  }),
69
69
  output: Schema.Void,
70
70
  }) {}
71
71
 
72
- export class ToggleResolved extends Schema.TaggedClass<ToggleResolved>()(`${THREAD_ACTION}/toggle-resolved`, {
72
+ export class ToggleResolved extends Schema.TaggedClass<ToggleResolved>()(`${meta.id}/action/toggle-resolved`, {
73
+ input: Schema.Struct({
74
+ thread: Thread.Thread,
75
+ }),
76
+ output: Schema.Void,
77
+ }) {}
78
+
79
+ export class AddProposal extends Schema.TaggedClass<AddProposal>()(`${meta.id}/action/add-proposal`, {
73
80
  input: Schema.Struct({
74
- thread: ThreadType,
81
+ text: Schema.String,
82
+ anchor: Schema.String,
83
+ sender: DataType.Actor,
84
+ subject: EchoObjectSchema,
75
85
  }),
76
86
  output: Schema.Void,
77
87
  }) {}
78
88
 
79
- export class AddMessage extends Schema.TaggedClass<AddMessage>()(`${THREAD_ACTION}/add-message`, {
89
+ export class AddMessage extends Schema.TaggedClass<AddMessage>()(`${meta.id}/action/add-message`, {
80
90
  input: Schema.Struct({
81
91
  subject: EchoObjectSchema,
82
92
  anchor: AnchoredTo,
@@ -86,7 +96,7 @@ export namespace ThreadAction {
86
96
  output: Schema.Void,
87
97
  }) {}
88
98
 
89
- export class DeleteMessage extends Schema.TaggedClass<DeleteMessage>()(`${THREAD_ACTION}/delete-message`, {
99
+ export class DeleteMessage extends Schema.TaggedClass<DeleteMessage>()(`${meta.id}/action/delete-message`, {
90
100
  input: Schema.Struct({
91
101
  anchor: AnchoredTo,
92
102
  subject: EchoObjectSchema,
@@ -102,7 +112,7 @@ export const ThreadSettingsSchema = Schema.mutable(Schema.Struct({}));
102
112
  export type ThreadSettingsProps = Schema.Schema.Type<typeof ThreadSettingsSchema>;
103
113
 
104
114
  export interface ThreadModel {
105
- root: ThreadType;
115
+ root: Thread.Thread;
106
116
  }
107
117
 
108
118
  type SubjectId = string;
@@ -22,7 +22,23 @@ declare module '@peermetrics/webrtc-stats' {
22
22
  connectionId: string;
23
23
  }
24
24
 
25
- export class WebRTCStats extends EventEmitter {
25
+ type TrackStats = {
26
+ id: string;
27
+ kind: 'audio' | 'video';
28
+ codecId: string;
29
+ mid: string;
30
+ bytesSent: number;
31
+ bytesReceived: number;
32
+ };
33
+
34
+ export type WebRTCStatsEvent = {
35
+ data: {
36
+ audio: { inbound: TrackStats[]; outbound: TrackStats[] };
37
+ video: { inbound: TrackStats[]; outbound: TrackStats[] };
38
+ };
39
+ };
40
+
41
+ export class WebRTCStats extends EventEmitter<{ stats: WebRTCStatsEvent }> {
26
42
  constructor(options: WebRTCStatsConstructorOptions);
27
43
  addConnection(info: ConnectionInfo): void;
28
44
  removeConnection(info: Pick<ConnectionInfo, 'pc'>): void;
@@ -0,0 +1,8 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ declare module '*.mp4?raw' {
6
+ const content: string;
7
+ export default content;
8
+ }
package/src/util.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Match } from 'effect';
5
+ import * as Match from 'effect/Match';
6
6
 
7
7
  import { generateName } from '@dxos/display-name';
8
8
  import { type Selection } from '@dxos/plugin-attention';
@@ -1,16 +0,0 @@
1
- import {
2
- ChannelContainer,
3
- ChannelContainer_default
4
- } from "./chunk-KWPRNHTK.mjs";
5
- import "./chunk-FR7KJPNY.mjs";
6
- import "./chunk-LGSDKXPF.mjs";
7
- import "./chunk-VUWC4IJM.mjs";
8
- import "./chunk-ERWASUQK.mjs";
9
- import "./chunk-GERVMFQW.mjs";
10
- import "./chunk-6NSMBO3B.mjs";
11
- import "./chunk-EV4JWI7L.mjs";
12
- export {
13
- ChannelContainer,
14
- ChannelContainer_default as default
15
- };
16
- //# sourceMappingURL=ChannelContainer-3GIE7ASU.mjs.map
@@ -1,15 +0,0 @@
1
- import {
2
- ChatContainer,
3
- ChatContainer_default,
4
- ChatHeading
5
- } from "./chunk-VUWC4IJM.mjs";
6
- import "./chunk-ERWASUQK.mjs";
7
- import "./chunk-GERVMFQW.mjs";
8
- import "./chunk-6NSMBO3B.mjs";
9
- import "./chunk-EV4JWI7L.mjs";
10
- export {
11
- ChatContainer,
12
- ChatHeading,
13
- ChatContainer_default as default
14
- };
15
- //# sourceMappingURL=ChatContainer-AIGIWAUG.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Option, pipe } from 'effect';\n\nimport { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { createExtension, ROOT_ID, rxFromSignal } from '@dxos/plugin-graph';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { meta, THREAD_PLUGIN } from '../meta';\nimport { ChannelType, ThreadAction } from '../types';\nimport { getAnchor } from '../util';\n\nexport default (context: PluginContext) => {\n const resolve = (typename: string) =>\n context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n return contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${THREAD_PLUGIN}/active-call`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map((node) => {\n const [call] = get(context.capabilities(ThreadCapabilities.CallManager));\n return get(\n rxFromSignal(() =>\n call?.joined\n ? [\n {\n id: `${node.id}${ATTENDABLE_PATH_SEPARATOR}active-call`,\n type: DECK_COMPANION_TYPE,\n data: null,\n properties: {\n label: ['call panel label', { ns: THREAD_PLUGIN }],\n icon: 'ph--video-conference--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ]\n : [],\n ),\n );\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n // TODO(wittjosiah): The channel shouldn't become the companion during a call.\n // Alternative: the call/meeting/thread should be a child node of the channel and that should be opened.\n createExtension({\n id: `${THREAD_PLUGIN}/channel-chat-companion`,\n connector: (node) => {\n return Rx.make((get) => {\n return pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(ChannelType, node.data) ? Option.some(node.data) : Option.none())),\n Option.map((channel) => {\n const callManager = context.getCapability(ThreadCapabilities.CallManager);\n const joined = get(\n rxFromSignal(() => callManager.joined && callManager.roomId === fullyQualifiedId(channel)),\n );\n if (!joined) {\n return [];\n }\n\n return [\n {\n id: `${fullyQualifiedId(channel)}${ATTENDABLE_PATH_SEPARATOR}chat`,\n type: PLANK_COMPANION_TYPE,\n data: 'chat',\n properties: {\n label: ['channel companion label', { ns: THREAD_PLUGIN }],\n icon: 'ph--hash--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n );\n });\n },\n }),\n createExtension({\n id: `${meta.id}/comments-companion`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => {\n if (!Obj.isObject(node.data) || Obj.instanceOf(ChannelType, node.data)) {\n return Option.none();\n }\n const metadata = resolve(Obj.getTypename(node.data)!);\n return typeof metadata.comments === 'string' ? Option.some(node) : Option.none();\n }),\n Option.map((node) => [\n {\n id: [node.id, 'comments'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'comments',\n properties: {\n label: ['comments label', { ns: meta.id }],\n icon: 'ph--chat-text--regular',\n disposition: 'hidden',\n position: 'hoist',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/comment-toolbar`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => {\n if (!Obj.isObject(node.data) || Obj.instanceOf(ChannelType, node.data)) {\n return Option.none();\n }\n const metadata = resolve(Obj.getTypename(node.data)!);\n return typeof metadata.comments === 'string' ? Option.some(node.data) : Option.none();\n }),\n Option.map((object) => {\n const selectionManager = context.getCapability(AttentionCapabilities.Selection);\n const toolbar = get(context.capabilities(ThreadCapabilities.State))[0]?.state.toolbar ?? {};\n const disabled = get(\n rxFromSignal(() => {\n const metadata = resolve(Obj.getTypename(object)!);\n const selection = selectionManager.getSelection(fullyQualifiedId(object), metadata.selectionMode);\n const anchor = getAnchor(selection);\n const invalidSelection = !anchor;\n const overlappingComment = toolbar[fullyQualifiedId(object)];\n return (metadata.comments === 'anchored' && invalidSelection) || overlappingComment;\n }),\n );\n\n return [\n {\n id: `${fullyQualifiedId(object)}/comment`,\n data: () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const metadata = resolve(Obj.getTypename(object)!);\n const selection = selectionManager.getSelection(fullyQualifiedId(object));\n // TODO(wittjosiah): Use presence of selection to determine if the comment should be anchored.\n // Requires all components which support selection (e.g. table/kanban) to support anchored comments.\n const anchor = metadata.comments === 'anchored' ? getAnchor(selection) : Date.now().toString();\n const name = metadata.getAnchorLabel?.(object, anchor);\n void dispatch(createIntent(ThreadAction.Create, { anchor, name, subject: object }));\n },\n properties: {\n label: ['add comment label', { ns: meta.id }],\n icon: 'ph--chat-text--regular',\n disposition: 'toolbar',\n disabled,\n testId: 'thread.comment.add',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n};\n"],
5
- "mappings": "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",
6
- "names": ["Rx", "Option", "pipe", "Capabilities", "contributes", "createIntent", "Obj", "AttentionCapabilities", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "DECK_COMPANION_TYPE", "createExtension", "ROOT_ID", "rxFromSignal", "fullyQualifiedId", "context", "resolve", "typename", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "contributes", "AppGraphBuilder", "createExtension", "THREAD_PLUGIN", "connector", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "ROOT_ID", "some", "none", "map", "call", "capabilities", "ThreadCapabilities", "CallManager", "rxFromSignal", "joined", "ATTENDABLE_PATH_SEPARATOR", "type", "DECK_COMPANION_TYPE", "data", "properties", "label", "ns", "icon", "position", "disposition", "getOrElse", "Obj", "instanceOf", "ChannelType", "channel", "callManager", "getCapability", "roomId", "fullyQualifiedId", "PLANK_COMPANION_TYPE", "meta", "isObject", "getTypename", "comments", "join", "actions", "object", "selectionManager", "AttentionCapabilities", "Selection", "toolbar", "State", "state", "disabled", "selection", "getSelection", "selectionMode", "anchor", "getAnchor", "invalidSelection", "overlappingComment", "dispatchPromise", "dispatch", "IntentDispatcher", "Date", "now", "toString", "name", "getAnchorLabel", "createIntent", "ThreadAction", "Create", "subject", "testId"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/call-manager.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes, type PluginContext } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { CallManager } from '../calls';\n\nexport default async (context: PluginContext) => {\n const client = context.getCapability(ClientCapabilities.Client);\n const callManager = new CallManager(client);\n await callManager.open();\n\n return contributes(ThreadCapabilities.CallManager, callManager, () => {\n void callManager.close();\n });\n};\n"],
5
- "mappings": ";;;;;;;;;;AAIA,SAASA,mBAAuC;AAChD,SAASC,0BAA0B;AAKnC,IAAA,uBAAe,OAAOC,YAAAA;AACpB,QAAMC,SAASD,QAAQE,cAAcC,mBAAmBC,MAAM;AAC9D,QAAMC,cAAc,IAAIC,YAAYL,MAAAA;AACpC,QAAMI,YAAYE,KAAI;AAEtB,SAAOC,YAAYC,mBAAmBH,aAAaD,aAAa,MAAA;AAC9D,SAAKA,YAAYK,MAAK;EACxB,CAAA;AACF;",
6
- "names": ["contributes", "ClientCapabilities", "context", "client", "getCapability", "ClientCapabilities", "Client", "callManager", "CallManager", "open", "contributes", "ThreadCapabilities", "close"]
7
- }