@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
@@ -1,65 +1,74 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  meta
4
- } from "./chunk-GRLRWTRU.mjs";
4
+ } from "./chunk-2AEIN5MI.mjs";
5
+ import {
6
+ __export
7
+ } from "./chunk-HSLMI22Q.mjs";
5
8
 
6
- // src/types/schema.ts
7
- import { Schema } from "effect";
8
- import { Type } from "@dxos/echo";
9
- import { DataType } from "@dxos/schema";
10
- var ThreadStatus = Schema.Union(Schema.Literal("staged"), Schema.Literal("active"), Schema.Literal("resolved"));
11
- var _ThreadType = Schema.Struct({
12
- name: Schema.optional(Schema.String),
13
- status: Schema.optional(ThreadStatus),
14
- messages: Schema.mutable(Schema.Array(Type.Ref(DataType.Message)))
15
- }).pipe(Type.Obj({
16
- typename: "dxos.org/type/Thread",
17
- version: "0.1.0"
18
- }));
19
- var ThreadType = _ThreadType;
20
- var _ChannelType = Schema.Struct({
9
+ // src/types/Channel.ts
10
+ var Channel_exports = {};
11
+ __export(Channel_exports, {
12
+ Channel: () => Channel,
13
+ make: () => make
14
+ });
15
+ import * as Schema from "effect/Schema";
16
+ import { Obj, Ref, Type } from "@dxos/echo";
17
+ import { FormInputAnnotation } from "@dxos/echo/internal";
18
+ import { Thread } from "@dxos/types";
19
+ var _Channel = Schema.Struct({
21
20
  name: Schema.optional(Schema.String),
22
- defaultThread: Type.Ref(ThreadType),
21
+ defaultThread: Type.Ref(Thread.Thread).pipe(FormInputAnnotation.set(false)),
23
22
  // TODO(wittjosiah): Should be an "ordered collection".
24
- threads: Schema.mutable(Schema.Array(Type.Ref(ThreadType)))
23
+ threads: Type.Ref(Thread.Thread).pipe(Schema.Array, Schema.mutable, FormInputAnnotation.set(false))
25
24
  }).pipe(Type.Obj({
26
25
  typename: "dxos.org/type/Channel",
27
26
  version: "0.1.0"
28
27
  }));
29
- var ChannelType = _ChannelType;
28
+ var Channel = _Channel;
29
+ var make = (props = {}) => Obj.make(Channel, {
30
+ ...props,
31
+ defaultThread: Ref.make(Obj.make(Thread.Thread, {
32
+ messages: [],
33
+ status: "active"
34
+ })),
35
+ threads: []
36
+ });
30
37
 
31
38
  // src/types/types.ts
32
- import { Schema as Schema2 } from "effect";
33
- import { Type as Type2 } from "@dxos/echo";
39
+ import * as Schema2 from "effect/Schema";
40
+ import { Key } from "@dxos/echo";
34
41
  import { EchoObjectSchema, SpaceSchema } from "@dxos/react-client/echo";
35
- import { AnchoredTo, DataType as DataType2 } from "@dxos/schema";
42
+ import { Collection } from "@dxos/schema";
43
+ import { Actor, AnchoredTo, Message, Thread as Thread2 } from "@dxos/types";
36
44
  (function(ThreadAction2) {
37
- class OnSpaceCreated extends Schema2.TaggedClass()(`${meta.id}/action/on-space-created`, {
45
+ class OnCreateSpace extends Schema2.TaggedClass()(`${meta.id}/action/on-space-created`, {
38
46
  input: Schema2.Struct({
39
47
  space: SpaceSchema,
40
- rootCollection: DataType2.Collection
48
+ rootCollection: Collection.Collection,
49
+ isDefault: Schema2.Boolean.pipe(Schema2.optional)
41
50
  }),
42
51
  output: Schema2.Void
43
52
  }) {
44
53
  }
45
- ThreadAction2.OnSpaceCreated = OnSpaceCreated;
54
+ ThreadAction2.OnCreateSpace = OnCreateSpace;
46
55
  class CreateChannel extends Schema2.TaggedClass()(`${meta.id}/action/create-channel`, {
47
56
  input: Schema2.Struct({
48
- spaceId: Type2.SpaceId,
57
+ spaceId: Key.SpaceId,
49
58
  name: Schema2.optional(Schema2.String)
50
59
  }),
51
60
  output: Schema2.Struct({
52
- object: ChannelType
61
+ object: Channel
53
62
  })
54
63
  }) {
55
64
  }
56
65
  ThreadAction2.CreateChannel = CreateChannel;
57
66
  class CreateChannelThread extends Schema2.TaggedClass()(`${meta.id}/action/create-channel-thread`, {
58
67
  input: Schema2.Struct({
59
- channel: ChannelType
68
+ channel: Channel
60
69
  }),
61
70
  output: Schema2.Struct({
62
- object: ThreadType
71
+ object: Thread2.Thread
63
72
  })
64
73
  }) {
65
74
  }
@@ -76,9 +85,9 @@ import { AnchoredTo, DataType as DataType2 } from "@dxos/schema";
76
85
  ThreadAction2.Create = Create;
77
86
  class Delete extends Schema2.TaggedClass()(`${meta.id}/action/delete`, {
78
87
  input: Schema2.Struct({
79
- anchor: AnchoredTo,
88
+ anchor: AnchoredTo.AnchoredTo,
80
89
  subject: EchoObjectSchema,
81
- thread: Schema2.optional(ThreadType)
90
+ thread: Schema2.optional(Thread2.Thread)
82
91
  }),
83
92
  output: Schema2.Void
84
93
  }) {
@@ -94,28 +103,17 @@ import { AnchoredTo, DataType as DataType2 } from "@dxos/schema";
94
103
  ThreadAction2.Select = Select;
95
104
  class ToggleResolved extends Schema2.TaggedClass()(`${meta.id}/action/toggle-resolved`, {
96
105
  input: Schema2.Struct({
97
- thread: ThreadType
106
+ thread: Thread2.Thread
98
107
  }),
99
108
  output: Schema2.Void
100
109
  }) {
101
110
  }
102
111
  ThreadAction2.ToggleResolved = ToggleResolved;
103
- class AddProposal extends Schema2.TaggedClass()(`${meta.id}/action/add-proposal`, {
104
- input: Schema2.Struct({
105
- text: Schema2.String,
106
- anchor: Schema2.String,
107
- sender: DataType2.Actor,
108
- subject: EchoObjectSchema
109
- }),
110
- output: Schema2.Void
111
- }) {
112
- }
113
- ThreadAction2.AddProposal = AddProposal;
114
112
  class AddMessage extends Schema2.TaggedClass()(`${meta.id}/action/add-message`, {
115
113
  input: Schema2.Struct({
116
114
  subject: EchoObjectSchema,
117
- anchor: AnchoredTo,
118
- sender: DataType2.Actor,
115
+ anchor: AnchoredTo.AnchoredTo,
116
+ sender: Actor.Actor,
119
117
  text: Schema2.String
120
118
  }),
121
119
  output: Schema2.Void
@@ -124,10 +122,10 @@ import { AnchoredTo, DataType as DataType2 } from "@dxos/schema";
124
122
  ThreadAction2.AddMessage = AddMessage;
125
123
  class DeleteMessage extends Schema2.TaggedClass()(`${meta.id}/action/delete-message`, {
126
124
  input: Schema2.Struct({
127
- anchor: AnchoredTo,
125
+ anchor: AnchoredTo.AnchoredTo,
128
126
  subject: EchoObjectSchema,
129
127
  messageId: Schema2.String,
130
- message: Schema2.optional(DataType2.Message),
128
+ message: Schema2.optional(Message.Message),
131
129
  messageIndex: Schema2.optional(Schema2.Number)
132
130
  }),
133
131
  output: Schema2.Void
@@ -139,10 +137,8 @@ var ThreadSettingsSchema = Schema2.mutable(Schema2.Struct({}));
139
137
  var ThreadAction;
140
138
 
141
139
  export {
142
- ThreadStatus,
143
- ThreadType,
144
- ChannelType,
140
+ Channel_exports,
145
141
  ThreadSettingsSchema,
146
142
  ThreadAction
147
143
  };
148
- //# sourceMappingURL=chunk-P6E247RF.mjs.map
144
+ //# sourceMappingURL=chunk-P2M364TO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/Channel.ts", "../../../src/types/types.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Obj, Ref, Type } from '@dxos/echo';\nimport { FormInputAnnotation } from '@dxos/echo/internal';\nimport { Thread } from '@dxos/types';\n\nconst _Channel = Schema.Struct({\n name: Schema.optional(Schema.String),\n defaultThread: Type.Ref(Thread.Thread).pipe(FormInputAnnotation.set(false)),\n // TODO(wittjosiah): Should be an \"ordered collection\".\n threads: Type.Ref(Thread.Thread).pipe(Schema.Array, Schema.mutable, FormInputAnnotation.set(false)),\n}).pipe(Type.Obj({ typename: 'dxos.org/type/Channel', version: '0.1.0' }));\nexport interface Channel extends Schema.Schema.Type<typeof _Channel> {}\nexport interface ChannelEncoded extends Schema.Schema.Encoded<typeof _Channel> {}\nexport const Channel: Schema.Schema<Channel, ChannelEncoded> = _Channel;\n\nexport const make = (props: Pick<Obj.MakeProps<typeof Channel>, 'name'> = {}) =>\n Obj.make(Channel, {\n ...props,\n defaultThread: Ref.make(Obj.make(Thread.Thread, { messages: [], status: 'active' })),\n threads: [],\n });\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Key } from '@dxos/echo';\nimport { EchoObjectSchema, SpaceSchema } from '@dxos/react-client/echo';\nimport { Collection } from '@dxos/schema';\nimport { Actor, AnchoredTo, Message, Thread } from '@dxos/types';\n\nimport { meta } from '../meta';\n\nimport * as Channel from './Channel';\n\nexport namespace ThreadAction {\n export class OnCreateSpace extends Schema.TaggedClass<OnCreateSpace>()(`${meta.id}/action/on-space-created`, {\n input: Schema.Struct({\n space: SpaceSchema,\n rootCollection: Collection.Collection,\n isDefault: Schema.Boolean.pipe(Schema.optional),\n }),\n output: Schema.Void,\n }) {}\n\n export class CreateChannel extends Schema.TaggedClass<CreateChannel>()(`${meta.id}/action/create-channel`, {\n input: Schema.Struct({\n spaceId: Key.SpaceId,\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Channel.Channel,\n }),\n }) {}\n\n export class CreateChannelThread extends Schema.TaggedClass<CreateChannelThread>()(\n `${meta.id}/action/create-channel-thread`,\n {\n input: Schema.Struct({\n channel: Channel.Channel,\n }),\n output: Schema.Struct({\n object: Thread.Thread,\n }),\n },\n ) {}\n\n export class Create extends Schema.TaggedClass<Create>()(`${meta.id}/action/create`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n anchor: Schema.optional(Schema.String),\n subject: EchoObjectSchema,\n }),\n output: Schema.Void,\n }) {}\n\n export class Delete extends Schema.TaggedClass<Delete>()(`${meta.id}/action/delete`, {\n input: Schema.Struct({\n anchor: AnchoredTo.AnchoredTo,\n subject: EchoObjectSchema,\n thread: Schema.optional(Thread.Thread),\n }),\n output: Schema.Void,\n }) {}\n\n export class Select extends Schema.TaggedClass<Select>()(`${meta.id}/action/select`, {\n input: Schema.Struct({\n current: Schema.String,\n }),\n output: Schema.Void,\n }) {}\n\n export class ToggleResolved extends Schema.TaggedClass<ToggleResolved>()(`${meta.id}/action/toggle-resolved`, {\n input: Schema.Struct({\n thread: Thread.Thread,\n }),\n output: Schema.Void,\n }) {}\n\n export class AddMessage extends Schema.TaggedClass<AddMessage>()(`${meta.id}/action/add-message`, {\n input: Schema.Struct({\n subject: EchoObjectSchema,\n anchor: AnchoredTo.AnchoredTo,\n sender: Actor.Actor,\n text: Schema.String,\n }),\n output: Schema.Void,\n }) {}\n\n export class DeleteMessage extends Schema.TaggedClass<DeleteMessage>()(`${meta.id}/action/delete-message`, {\n input: Schema.Struct({\n anchor: AnchoredTo.AnchoredTo,\n subject: EchoObjectSchema,\n messageId: Schema.String,\n message: Schema.optional(Message.Message),\n messageIndex: Schema.optional(Schema.Number),\n }),\n output: Schema.Void,\n }) {}\n}\n\nexport const ThreadSettingsSchema = Schema.mutable(Schema.Struct({}));\nexport type ThreadSettingsProps = Schema.Schema.Type<typeof ThreadSettingsSchema>;\n\nexport interface ThreadModel {\n root: Thread.Thread;\n}\n\ntype SubjectId = string;\nexport type ViewState = { showResolvedThreads: boolean };\nexport type ViewStore = Record<SubjectId, ViewState>;\n\nexport type ThreadState = {\n /** Object toolbar state. */\n toolbar: Record<string, boolean>;\n /** In-memory draft threads. */\n drafts: Record<string, AnchoredTo.AnchoredTo[]>;\n current?: string | undefined;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Schema", "Obj", "Ref", "Type", "FormInputAnnotation", "Thread", "_Channel", "Struct", "name", "optional", "String", "defaultThread", "Type", "Ref", "Thread", "pipe", "FormInputAnnotation", "set", "threads", "Array", "mutable", "Obj", "typename", "version", "Channel", "make", "props", "messages", "status", "Schema", "Key", "EchoObjectSchema", "SpaceSchema", "Collection", "Actor", "AnchoredTo", "Message", "Thread", "ThreadAction", "OnCreateSpace", "TaggedClass", "meta", "id", "input", "Struct", "space", "SpaceSchema", "rootCollection", "Collection", "isDefault", "Boolean", "pipe", "optional", "output", "Void", "CreateChannel", "spaceId", "Key", "SpaceId", "name", "String", "object", "Channel", "CreateChannelThread", "channel", "Thread", "Create", "anchor", "subject", "EchoObjectSchema", "Delete", "AnchoredTo", "thread", "Select", "current", "ToggleResolved", "AddMessage", "sender", "Actor", "text", "DeleteMessage", "messageId", "message", "Message", "messageIndex", "Number", "ThreadSettingsSchema", "mutable"]
7
+ }
@@ -2,11 +2,12 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  createBlackCanvasStreamTrack,
4
4
  createInaudibleAudioStreamTrack
5
- } from "./chunk-S3D7DTBF.mjs";
5
+ } from "./chunk-VBI32FGI.mjs";
6
6
 
7
7
  // src/hooks/analytics.ts
8
8
  import { useCallback } from "react";
9
- import { createIntent, useIntentDispatcher } from "@dxos/app-framework";
9
+ import { createIntent } from "@dxos/app-framework";
10
+ import { useIntentDispatcher } from "@dxos/app-framework/react";
10
11
  import { ObservabilityAction } from "@dxos/plugin-observability/types";
11
12
  import { getSpace } from "@dxos/react-client/echo";
12
13
  import { useOnTransition } from "@dxos/react-ui";
@@ -33,11 +34,38 @@ var useOnEditAnalytics = (message, textBlock, editing) => {
33
34
  useOnTransition(editing, true, false, onEdit);
34
35
  };
35
36
 
36
- // src/hooks/useDebugMode.ts
37
+ // src/hooks/useBlackCanvasStreamTrack.tsx
37
38
  import { useEffect, useState } from "react";
38
- var useDebugMode = () => {
39
- const [enabled, setEnabled] = useState(false);
39
+ import { scheduleTask } from "@dxos/async";
40
+ import { Context } from "@dxos/context";
41
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/hooks/useBlackCanvasStreamTrack.tsx";
42
+ var useBlackCanvasStreamTrack = () => {
43
+ const [blackCanvasStreamTrack, setBlackCanvasStreamTrack] = useState(void 0);
40
44
  useEffect(() => {
45
+ const ctx = new Context(void 0, {
46
+ F: __dxlog_file,
47
+ L: 15
48
+ });
49
+ scheduleTask(ctx, async () => {
50
+ const blackCanvasStreamTrack2 = await createBlackCanvasStreamTrack({
51
+ ctx,
52
+ width: 720,
53
+ height: 480
54
+ });
55
+ setBlackCanvasStreamTrack(blackCanvasStreamTrack2);
56
+ });
57
+ return () => {
58
+ void ctx.dispose();
59
+ };
60
+ }, []);
61
+ return blackCanvasStreamTrack;
62
+ };
63
+
64
+ // src/hooks/useDebugMode.ts
65
+ import { useEffect as useEffect2, useState as useState2 } from "react";
66
+ var useDebugMode = () => {
67
+ const [enabled, setEnabled] = useState2(false);
68
+ useEffect2(() => {
41
69
  const handler = (ev) => {
42
70
  if (ev.key.toLowerCase() === "d" && ev.ctrlKey) {
43
71
  ev.preventDefault();
@@ -54,11 +82,36 @@ var useDebugMode = () => {
54
82
  return enabled;
55
83
  };
56
84
 
85
+ // src/hooks/useInaudibleAudioStreamTrack.tsx
86
+ import { useEffect as useEffect3, useState as useState3 } from "react";
87
+ import { scheduleTask as scheduleTask2 } from "@dxos/async";
88
+ import { Context as Context2 } from "@dxos/context";
89
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/hooks/useInaudibleAudioStreamTrack.tsx";
90
+ var useInaudibleAudioStreamTrack = () => {
91
+ const [audioStreamTrack, setAudioStreamTrack] = useState3(void 0);
92
+ useEffect3(() => {
93
+ const ctx = new Context2(void 0, {
94
+ F: __dxlog_file2,
95
+ L: 15
96
+ });
97
+ scheduleTask2(ctx, async () => {
98
+ const audioStreamTrack2 = await createInaudibleAudioStreamTrack({
99
+ ctx
100
+ });
101
+ setAudioStreamTrack(audioStreamTrack2);
102
+ });
103
+ return () => {
104
+ void ctx.dispose();
105
+ };
106
+ }, []);
107
+ return audioStreamTrack;
108
+ };
109
+
57
110
  // src/hooks/useStatus.ts
58
- import { useEffect as useEffect2, useState as useState2 } from "react";
111
+ import { useEffect as useEffect4, useState as useState4 } from "react";
59
112
  var useStatus = (space, channel) => {
60
- const [processing, setProcessing] = useState2(false);
61
- useEffect2(() => {
113
+ const [processing, setProcessing] = useState4(false);
114
+ useEffect4(() => {
62
115
  if (!space || !channel) {
63
116
  return;
64
117
  }
@@ -87,11 +140,11 @@ var useStatus = (space, channel) => {
87
140
  };
88
141
 
89
142
  // src/hooks/useVideoStreamTrack.tsx
90
- import { useEffect as useEffect3, useRef, useState as useState3 } from "react";
143
+ import { useEffect as useEffect5, useRef, useState as useState5 } from "react";
91
144
  var useVideoStreamTrack = (videoElement, videoSrc) => {
92
- const [videoStreamTrack, setVideoStreamTrack] = useState3(void 0);
145
+ const [videoStreamTrack, setVideoStreamTrack] = useState5(void 0);
93
146
  const hadRun = useRef(false);
94
- useEffect3(() => {
147
+ useEffect5(() => {
95
148
  if (!videoElement.current || hadRun.current || !videoSrc) {
96
149
  return;
97
150
  }
@@ -119,64 +172,12 @@ var useVideoStreamTrack = (videoElement, videoSrc) => {
119
172
  return videoStreamTrack;
120
173
  };
121
174
 
122
- // src/hooks/useInaudibleAudioStreamTrack.tsx
123
- import { useEffect as useEffect4, useState as useState4 } from "react";
124
- import { scheduleTask } from "@dxos/async";
125
- import { Context } from "@dxos/context";
126
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/hooks/useInaudibleAudioStreamTrack.tsx";
127
- var useInaudibleAudioStreamTrack = () => {
128
- const [audioStreamTrack, setAudioStreamTrack] = useState4(void 0);
129
- useEffect4(() => {
130
- const ctx = new Context(void 0, {
131
- F: __dxlog_file,
132
- L: 15
133
- });
134
- scheduleTask(ctx, async () => {
135
- const audioStreamTrack2 = await createInaudibleAudioStreamTrack({
136
- ctx
137
- });
138
- setAudioStreamTrack(audioStreamTrack2);
139
- });
140
- return () => {
141
- void ctx.dispose();
142
- };
143
- }, []);
144
- return audioStreamTrack;
145
- };
146
-
147
- // src/hooks/useBlackCanvasStreamTrack.tsx
148
- import { useEffect as useEffect5, useState as useState5 } from "react";
149
- import { scheduleTask as scheduleTask2 } from "@dxos/async";
150
- import { Context as Context2 } from "@dxos/context";
151
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/hooks/useBlackCanvasStreamTrack.tsx";
152
- var useBlackCanvasStreamTrack = () => {
153
- const [blackCanvasStreamTrack, setBlackCanvasStreamTrack] = useState5(void 0);
154
- useEffect5(() => {
155
- const ctx = new Context2(void 0, {
156
- F: __dxlog_file2,
157
- L: 15
158
- });
159
- scheduleTask2(ctx, async () => {
160
- const blackCanvasStreamTrack2 = await createBlackCanvasStreamTrack({
161
- ctx,
162
- width: 720,
163
- height: 480
164
- });
165
- setBlackCanvasStreamTrack(blackCanvasStreamTrack2);
166
- });
167
- return () => {
168
- void ctx.dispose();
169
- };
170
- }, []);
171
- return blackCanvasStreamTrack;
172
- };
173
-
174
175
  export {
175
176
  useOnEditAnalytics,
177
+ useBlackCanvasStreamTrack,
176
178
  useDebugMode,
177
- useStatus,
178
- useVideoStreamTrack,
179
179
  useInaudibleAudioStreamTrack,
180
- useBlackCanvasStreamTrack
180
+ useStatus,
181
+ useVideoStreamTrack
181
182
  };
182
- //# sourceMappingURL=chunk-CTZ75IFK.mjs.map
183
+ //# sourceMappingURL=chunk-PZH2EDU5.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/analytics.ts", "../../../src/hooks/useBlackCanvasStreamTrack.tsx", "../../../src/hooks/useDebugMode.ts", "../../../src/hooks/useInaudibleAudioStreamTrack.tsx", "../../../src/hooks/useStatus.ts", "../../../src/hooks/useVideoStreamTrack.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { createIntent } from '@dxos/app-framework';\nimport { useIntentDispatcher } from '@dxos/app-framework/react';\nimport { type Live } from '@dxos/live-object';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useOnTransition } from '@dxos/react-ui';\nimport { type ContentBlock } from '@dxos/types';\n\nexport const useOnEditAnalytics = (message: Live<any>, textBlock: ContentBlock.Text | undefined, editing: boolean) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const onEdit = useCallback(() => {\n const space = getSpace(message);\n if (!space || !textBlock) {\n return;\n }\n\n void dispatch(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.message.update',\n properties: {\n spaceId: space.id,\n messageId: message.id,\n messageLength: textBlock?.text.length,\n },\n }),\n );\n }, [dispatch, message, textBlock]);\n\n useOnTransition(editing, true, false, onEdit);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { scheduleTask } from '@dxos/async';\nimport { Context } from '@dxos/context';\n\nimport { createBlackCanvasStreamTrack } from '../calls/util/stub-media-streams';\n\nexport const useBlackCanvasStreamTrack = () => {\n const [blackCanvasStreamTrack, setBlackCanvasStreamTrack] = useState<MediaStreamTrack | undefined>(undefined);\n useEffect(() => {\n const ctx = new Context();\n scheduleTask(ctx, async () => {\n const blackCanvasStreamTrack = await createBlackCanvasStreamTrack({ ctx, width: 720, height: 480 });\n setBlackCanvasStreamTrack(blackCanvasStreamTrack);\n });\n\n return () => {\n void ctx.dispose();\n };\n }, []);\n\n return blackCanvasStreamTrack;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\n// TODO(burdon): Standardize across plugins/composer.\nexport const useDebugMode = () => {\n const [enabled, setEnabled] = useState(false);\n useEffect(() => {\n const handler = (ev: KeyboardEvent) => {\n if (ev.key.toLowerCase() === 'd' && ev.ctrlKey) {\n ev.preventDefault();\n setEnabled(!enabled);\n }\n };\n\n document.addEventListener('keypress', handler);\n return () => {\n document.removeEventListener('keypress', handler);\n };\n }, [enabled]);\n\n return enabled;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { scheduleTask } from '@dxos/async';\nimport { Context } from '@dxos/context';\n\nimport { createInaudibleAudioStreamTrack } from '../calls/util/stub-media-streams';\n\nexport const useInaudibleAudioStreamTrack = () => {\n const [audioStreamTrack, setAudioStreamTrack] = useState<MediaStreamTrack | undefined>(undefined);\n useEffect(() => {\n const ctx = new Context();\n scheduleTask(ctx, async () => {\n const audioStreamTrack = await createInaudibleAudioStreamTrack({ ctx });\n setAudioStreamTrack(audioStreamTrack);\n });\n\n return () => {\n void ctx.dispose();\n };\n }, []);\n\n return audioStreamTrack;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\n\n// TODO(burdon): Generalize and factor out.\nexport const useStatus = (space?: Space, channel?: string) => {\n const [processing, setProcessing] = useState(false);\n useEffect(() => {\n if (!space || !channel) {\n return;\n }\n\n const unsubscribe = space.listen(`status/${channel}`, (status) => {\n const { event } = status.payload ?? {};\n setProcessing(event === 'processing');\n });\n\n const t = setInterval(() => {\n setProcessing((prev: any) => {\n if (typeof prev?.ts === 'number' && Date.now() - prev.ts > 30_000) {\n return undefined;\n } else {\n return prev;\n }\n });\n }, 1_000);\n\n return () => {\n unsubscribe();\n clearInterval(t);\n };\n }, [space, channel]);\n\n return processing;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type RefObject, useEffect, useRef, useState } from 'react';\n\nexport const useVideoStreamTrack = (videoElement: RefObject<HTMLVideoElement | null>, videoSrc: string) => {\n // Get video stream track.\n const [videoStreamTrack, setVideoStreamTrack] = useState<MediaStreamTrack | undefined>(undefined);\n const hadRun = useRef(false);\n useEffect(() => {\n // This is done to capture only one video stream.\n if (!videoElement.current || hadRun.current || !videoSrc) {\n return;\n }\n hadRun.current = true;\n videoElement.current.addEventListener('playing', () => {\n if (videoStreamTrack) {\n return;\n }\n const stream = (videoElement.current as any).captureStream();\n const track = stream.getTracks()[0];\n if (track && !videoStreamTrack) {\n setVideoStreamTrack(track);\n }\n stream.onaddtrack = (event: MediaStreamTrackEvent) => {\n if (event.track.kind === 'video' && !videoStreamTrack) {\n setVideoStreamTrack(event.track);\n }\n };\n });\n videoElement.current.src = videoSrc;\n }, [videoElement.current, videoSrc]);\n\n return videoStreamTrack;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["useCallback", "createIntent", "useIntentDispatcher", "ObservabilityAction", "getSpace", "useOnTransition", "useOnEditAnalytics", "message", "textBlock", "editing", "dispatchPromise", "dispatch", "useIntentDispatcher", "onEdit", "useCallback", "space", "getSpace", "createIntent", "ObservabilityAction", "SendEvent", "name", "properties", "spaceId", "id", "messageId", "messageLength", "text", "length", "useOnTransition", "useEffect", "useState", "scheduleTask", "Context", "useBlackCanvasStreamTrack", "blackCanvasStreamTrack", "setBlackCanvasStreamTrack", "useState", "undefined", "useEffect", "ctx", "Context", "scheduleTask", "createBlackCanvasStreamTrack", "width", "height", "dispose", "useEffect", "useState", "useDebugMode", "enabled", "setEnabled", "useState", "useEffect", "handler", "ev", "key", "toLowerCase", "ctrlKey", "preventDefault", "document", "addEventListener", "removeEventListener", "useEffect", "useState", "scheduleTask", "Context", "useInaudibleAudioStreamTrack", "audioStreamTrack", "setAudioStreamTrack", "useState", "undefined", "useEffect", "ctx", "Context", "scheduleTask", "createInaudibleAudioStreamTrack", "dispose", "useEffect", "useState", "useStatus", "space", "channel", "processing", "setProcessing", "useState", "useEffect", "unsubscribe", "listen", "status", "event", "payload", "t", "setInterval", "prev", "ts", "Date", "now", "undefined", "clearInterval", "useEffect", "useRef", "useState", "useVideoStreamTrack", "videoElement", "videoSrc", "videoStreamTrack", "setVideoStreamTrack", "useState", "undefined", "hadRun", "useRef", "useEffect", "current", "addEventListener", "stream", "captureStream", "track", "getTracks", "onaddtrack", "event", "kind", "src"]
7
+ }
@@ -0,0 +1,19 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ meta
4
+ } from "./chunk-2AEIN5MI.mjs";
5
+
6
+ // src/capabilities/capabilities.ts
7
+ import { defineCapability } from "@dxos/app-framework";
8
+ (function(ThreadCapabilities2) {
9
+ ThreadCapabilities2.CallManager = defineCapability(`${meta.id}/capability/call-manager`);
10
+ ThreadCapabilities2.CallExtension = defineCapability(`${meta.id}/capability/call-extension`);
11
+ ThreadCapabilities2.State = defineCapability(`${meta.id}/capability/state`);
12
+ ThreadCapabilities2.MutableState = defineCapability(`${meta.id}/capability/state`);
13
+ })(ThreadCapabilities || (ThreadCapabilities = {}));
14
+ var ThreadCapabilities;
15
+
16
+ export {
17
+ ThreadCapabilities
18
+ };
19
+ //# sourceMappingURL=chunk-RT6NRL2I.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/capabilities.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineCapability } from '@dxos/app-framework';\nimport { type DeepReadonly } from '@dxos/util';\n\nimport { type CallManager, type CallState, type MediaState } from '../calls';\nimport { meta } from '../meta';\nimport { type Channel, type ThreadState, type ViewState } from '../types';\n\nexport namespace ThreadCapabilities {\n export const CallManager = defineCapability<CallManager>(`${meta.id}/capability/call-manager`);\n\n // TODO(burdon): Better way to define specific extensions for meeting companions.\n // TODO(burdon): This brings in deps from ../calls; how should we manage/minimize explicit type exposure to other plugins?\n // TODO(wittjosiah): These callbacks could be intents once we support broadcast.\n export type CallProperties = {\n onJoin: (state: { channel?: Channel.Channel; roomId?: string }) => Promise<void>;\n onLeave: (roomId?: string) => Promise<void>;\n onCallStateUpdated: (callState: CallState) => Promise<void>;\n onMediaStateUpdated: ([mediaState, isSpeaking]: [MediaState, boolean]) => Promise<void>;\n };\n export const CallExtension = defineCapability<CallProperties>(`${meta.id}/capability/call-extension`);\n\n type GetViewState = (subjectId: string) => ViewState;\n export const State = defineCapability<{ state: DeepReadonly<ThreadState>; getViewState: GetViewState }>(\n `${meta.id}/capability/state`,\n );\n export const MutableState = defineCapability<{ state: ThreadState; getViewState: GetViewState }>(\n `${meta.id}/capability/state`,\n );\n}\n"],
5
+ "mappings": ";;;;;;AAIA,SAASA,wBAAwB;UAOhBC,qBAAAA;sBACFC,cAAcC,iBAA8B,GAAGC,KAAKC,EAAE,0BAA0B;sBAWhFC,gBAAgBH,iBAAiC,GAAGC,KAAKC,EAAE,4BAA4B;sBAGvFE,QAAQJ,iBACnB,GAAGC,KAAKC,EAAE,mBAAmB;sBAElBG,eAAeL,iBAC1B,GAAGC,KAAKC,EAAE,mBAAmB;AAEjC,GArBiBJ,uBAAAA,qBAAAA,CAAAA,EAAAA;;",
6
+ "names": ["defineCapability", "ThreadCapabilities", "CallManager", "defineCapability", "meta", "id", "CallExtension", "State", "MutableState"]
7
+ }
@@ -32,18 +32,68 @@ var createBlackCanvasStreamTrack = async ({ ctx, width, height }) => {
32
32
  }));
33
33
  return track;
34
34
  };
35
+ var audioContextStartedPreviously = false;
36
+ var userGestureEvents = [
37
+ "click",
38
+ "contextmenu",
39
+ "auxclick",
40
+ "dblclick",
41
+ "mousedown",
42
+ "mouseup",
43
+ "pointerup",
44
+ "touchend",
45
+ "keydown",
46
+ "keyup"
47
+ ];
35
48
  var createInaudibleAudioStreamTrack = async ({ ctx }) => {
36
49
  const audioContext = new window.AudioContext();
37
50
  const oscillator = audioContext.createOscillator();
38
51
  oscillator.type = "triangle";
39
52
  oscillator.frequency.setValueAtTime(20, audioContext.currentTime);
40
53
  const gainNode = audioContext.createGain();
41
- gainNode.gain.setValueAtTime(0.01, audioContext.currentTime);
54
+ gainNode.gain.setValueAtTime(0, audioContext.currentTime);
42
55
  oscillator.connect(gainNode);
43
56
  const destination = audioContext.createMediaStreamDestination();
44
57
  gainNode.connect(destination);
45
- oscillator.start();
58
+ let oscillatorStarted = false;
59
+ const ensureOscillatorStarted = () => {
60
+ if (oscillatorStarted) return;
61
+ oscillator.start();
62
+ oscillatorStarted = true;
63
+ };
64
+ const stateChangeHandler = () => {
65
+ if (audioContext.state === "running") {
66
+ audioContextStartedPreviously = true;
67
+ ensureOscillatorStarted();
68
+ }
69
+ if (audioContext.state === "suspended" || audioContext.state === "interrupted") {
70
+ resumeAudioContext();
71
+ }
72
+ };
73
+ audioContext.addEventListener("statechange", stateChangeHandler);
74
+ const resumeAudioContext = () => {
75
+ void audioContext.resume().then(() => {
76
+ cleanUpUserGestureListeners();
77
+ });
78
+ };
79
+ const cleanUpUserGestureListeners = () => {
80
+ userGestureEvents.forEach((gesture) => {
81
+ document.removeEventListener(gesture, resumeAudioContext, {
82
+ capture: true
83
+ });
84
+ });
85
+ };
86
+ if (audioContextStartedPreviously) {
87
+ resumeAudioContext();
88
+ } else {
89
+ userGestureEvents.forEach((gesture) => {
90
+ document.addEventListener(gesture, resumeAudioContext, {
91
+ capture: true
92
+ });
93
+ });
94
+ }
46
95
  ctx.onDispose(async () => {
96
+ cleanUpUserGestureListeners();
47
97
  oscillator.disconnect();
48
98
  oscillator.stop();
49
99
  await audioContext.close();
@@ -55,4 +105,4 @@ export {
55
105
  createBlackCanvasStreamTrack,
56
106
  createInaudibleAudioStreamTrack
57
107
  };
58
- //# sourceMappingURL=chunk-S3D7DTBF.mjs.map
108
+ //# sourceMappingURL=chunk-VBI32FGI.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/calls/util/stub-media-streams.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n//\n\nimport { scheduleTaskInterval, waitForCondition } from '@dxos/async';\nimport { type Context, cancelWithContext } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\n\n/**\n * Creates a black canvas stream track.\n * We need this to to have black rectangle video that is live (have frames) when video feed is disabled.\n */\nexport const createBlackCanvasStreamTrack = async ({\n ctx,\n width,\n height,\n}: {\n ctx: Context;\n width: number;\n height: number;\n}): Promise<MediaStreamTrack> => {\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n\n const canvasCtx = canvas.getContext('2d');\n invariant(canvasCtx);\n const drawFrame = () => {\n canvasCtx.fillStyle = 'black';\n canvasCtx.fillRect(0, 0, canvas.width, canvas.height);\n };\n scheduleTaskInterval(ctx, async () => drawFrame(), 200);\n\n const track = canvas.captureStream().getVideoTracks()[0];\n drawFrame();\n\n await cancelWithContext(ctx, waitForCondition({ condition: () => track.readyState === 'live', timeout: 1_000 }));\n\n return track;\n};\n\nlet audioContextStartedPreviously = false;\nconst userGestureEvents = [\n 'click',\n 'contextmenu',\n 'auxclick',\n 'dblclick',\n 'mousedown',\n 'mouseup',\n 'pointerup',\n 'touchend',\n 'keydown',\n 'keyup',\n];\n\n/**\n * Creates an inaudible audio stream track.\n * We need this to have audio track available when audio is disabled.\n */\nexport const createInaudibleAudioStreamTrack = async ({ ctx }: { ctx: Context }): Promise<MediaStreamTrack> => {\n const audioContext = new window.AudioContext();\n\n const oscillator = audioContext.createOscillator();\n oscillator.type = 'triangle';\n oscillator.frequency.setValueAtTime(20, audioContext.currentTime);\n\n const gainNode = audioContext.createGain();\n gainNode.gain.setValueAtTime(0, audioContext.currentTime);\n oscillator.connect(gainNode);\n\n const destination = audioContext.createMediaStreamDestination();\n gainNode.connect(destination);\n\n let oscillatorStarted = false;\n const ensureOscillatorStarted = () => {\n if (oscillatorStarted) return;\n oscillator.start();\n oscillatorStarted = true;\n };\n\n const stateChangeHandler = () => {\n if (audioContext.state === 'running') {\n audioContextStartedPreviously = true;\n ensureOscillatorStarted();\n }\n\n if (audioContext.state === 'suspended' || (audioContext.state as string) === 'interrupted') {\n resumeAudioContext();\n }\n };\n\n audioContext.addEventListener('statechange', stateChangeHandler);\n\n const resumeAudioContext = () => {\n void audioContext.resume().then(() => {\n cleanUpUserGestureListeners();\n });\n };\n\n const cleanUpUserGestureListeners = () => {\n userGestureEvents.forEach((gesture) => {\n document.removeEventListener(gesture, resumeAudioContext, {\n capture: true,\n });\n });\n };\n\n if (audioContextStartedPreviously) {\n resumeAudioContext();\n } else {\n userGestureEvents.forEach((gesture) => {\n document.addEventListener(gesture, resumeAudioContext, {\n capture: true,\n });\n });\n }\n\n ctx.onDispose(async () => {\n cleanUpUserGestureListeners();\n oscillator.disconnect();\n oscillator.stop();\n await audioContext.close();\n });\n\n return destination.stream.getAudioTracks()[0];\n};\n"],
5
+ "mappings": ";;;AAKA,SAASA,sBAAsBC,wBAAwB;AACvD,SAAuBC,yBAAyB;AAChD,SAASC,iBAAiB;;AAMnB,IAAMC,+BAA+B,OAAO,EACjDC,KACAC,OACAC,OAAM,MAKP;AACC,QAAMC,SAASC,SAASC,cAAc,QAAA;AACtCF,SAAOF,QAAQA;AACfE,SAAOD,SAASA;AAEhB,QAAMI,YAAYH,OAAOI,WAAW,IAAA;AACpCT,YAAUQ,WAAAA,QAAAA;;;;;;;;;AACV,QAAME,YAAY,MAAA;AAChBF,cAAUG,YAAY;AACtBH,cAAUI,SAAS,GAAG,GAAGP,OAAOF,OAAOE,OAAOD,MAAM;EACtD;AACAP,uBAAqBK,KAAK,YAAYQ,UAAAA,GAAa,GAAA;AAEnD,QAAMG,QAAQR,OAAOS,cAAa,EAAGC,eAAc,EAAG,CAAA;AACtDL,YAAAA;AAEA,QAAMX,kBAAkBG,KAAKJ,iBAAiB;IAAEkB,WAAW,MAAMH,MAAMI,eAAe;IAAQC,SAAS;EAAM,CAAA,CAAA;AAE7G,SAAOL;AACT;AAEA,IAAIM,gCAAgC;AACpC,IAAMC,oBAAoB;EACxB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAOK,IAAMC,kCAAkC,OAAO,EAAEnB,IAAG,MAAoB;AAC7E,QAAMoB,eAAe,IAAIC,OAAOC,aAAY;AAE5C,QAAMC,aAAaH,aAAaI,iBAAgB;AAChDD,aAAWE,OAAO;AAClBF,aAAWG,UAAUC,eAAe,IAAIP,aAAaQ,WAAW;AAEhE,QAAMC,WAAWT,aAAaU,WAAU;AACxCD,WAASE,KAAKJ,eAAe,GAAGP,aAAaQ,WAAW;AACxDL,aAAWS,QAAQH,QAAAA;AAEnB,QAAMI,cAAcb,aAAac,6BAA4B;AAC7DL,WAASG,QAAQC,WAAAA;AAEjB,MAAIE,oBAAoB;AACxB,QAAMC,0BAA0B,MAAA;AAC9B,QAAID,kBAAmB;AACvBZ,eAAWc,MAAK;AAChBF,wBAAoB;EACtB;AAEA,QAAMG,qBAAqB,MAAA;AACzB,QAAIlB,aAAamB,UAAU,WAAW;AACpCtB,sCAAgC;AAChCmB,8BAAAA;IACF;AAEA,QAAIhB,aAAamB,UAAU,eAAgBnB,aAAamB,UAAqB,eAAe;AAC1FC,yBAAAA;IACF;EACF;AAEApB,eAAaqB,iBAAiB,eAAeH,kBAAAA;AAE7C,QAAME,qBAAqB,MAAA;AACzB,SAAKpB,aAAasB,OAAM,EAAGC,KAAK,MAAA;AAC9BC,kCAAAA;IACF,CAAA;EACF;AAEA,QAAMA,8BAA8B,MAAA;AAClC1B,sBAAkB2B,QAAQ,CAACC,YAAAA;AACzB1C,eAAS2C,oBAAoBD,SAASN,oBAAoB;QACxDQ,SAAS;MACX,CAAA;IACF,CAAA;EACF;AAEA,MAAI/B,+BAA+B;AACjCuB,uBAAAA;EACF,OAAO;AACLtB,sBAAkB2B,QAAQ,CAACC,YAAAA;AACzB1C,eAASqC,iBAAiBK,SAASN,oBAAoB;QACrDQ,SAAS;MACX,CAAA;IACF,CAAA;EACF;AAEAhD,MAAIiD,UAAU,YAAA;AACZL,gCAAAA;AACArB,eAAW2B,WAAU;AACrB3B,eAAW4B,KAAI;AACf,UAAM/B,aAAagC,MAAK;EAC1B,CAAA;AAEA,SAAOnB,YAAYoB,OAAOC,eAAc,EAAG,CAAA;AAC7C;",
6
+ "names": ["scheduleTaskInterval", "waitForCondition", "cancelWithContext", "invariant", "createBlackCanvasStreamTrack", "ctx", "width", "height", "canvas", "document", "createElement", "canvasCtx", "getContext", "drawFrame", "fillStyle", "fillRect", "track", "captureStream", "getVideoTracks", "condition", "readyState", "timeout", "audioContextStartedPreviously", "userGestureEvents", "createInaudibleAudioStreamTrack", "audioContext", "window", "AudioContext", "oscillator", "createOscillator", "type", "frequency", "setValueAtTime", "currentTime", "gainNode", "createGain", "gain", "connect", "destination", "createMediaStreamDestination", "oscillatorStarted", "ensureOscillatorStarted", "start", "stateChangeHandler", "state", "resumeAudioContext", "addEventListener", "resume", "then", "cleanUpUserGestureListeners", "forEach", "gesture", "removeEventListener", "capture", "onDispose", "disconnect", "stop", "close", "stream", "getAudioTracks"]
7
+ }