@dxos/plugin-thread 0.8.4-main.72ec0f3 → 0.8.4-main.74a063c4e0

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 (458) hide show
  1. package/dist/lib/browser/add-message-MJDIN4K4.mjs +97 -0
  2. package/dist/lib/browser/add-message-MJDIN4K4.mjs.map +7 -0
  3. package/dist/lib/browser/blueprints/index.mjs +37 -0
  4. package/dist/lib/browser/blueprints/index.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-2QNKWX4H.mjs +259 -0
  6. package/dist/lib/browser/chunk-2QNKWX4H.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-7T7J6ZR6.mjs +61 -0
  8. package/dist/lib/browser/chunk-7T7J6ZR6.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  10. package/dist/lib/browser/create-N2ZVTONJ.mjs +55 -0
  11. package/dist/lib/browser/create-N2ZVTONJ.mjs.map +7 -0
  12. package/dist/lib/browser/create-channel-Y4H3535D.mjs +21 -0
  13. package/dist/lib/browser/create-channel-Y4H3535D.mjs.map +7 -0
  14. package/dist/lib/browser/create-channel-thread-6N7TKEAW.mjs +28 -0
  15. package/dist/lib/browser/create-channel-thread-6N7TKEAW.mjs.map +7 -0
  16. package/dist/lib/browser/create-proposals-VTOSWUOX.mjs +57 -0
  17. package/dist/lib/browser/create-proposals-VTOSWUOX.mjs.map +7 -0
  18. package/dist/lib/browser/delete-QZZE655Y.mjs +59 -0
  19. package/dist/lib/browser/delete-QZZE655Y.mjs.map +7 -0
  20. package/dist/lib/browser/delete-message-JTBPACDE.mjs +64 -0
  21. package/dist/lib/browser/delete-message-JTBPACDE.mjs.map +7 -0
  22. package/dist/lib/browser/index.mjs +2249 -227
  23. package/dist/lib/browser/index.mjs.map +4 -4
  24. package/dist/lib/browser/meta.json +1 -1
  25. package/dist/lib/browser/on-create-space-2UGS234J.mjs +25 -0
  26. package/dist/lib/browser/on-create-space-2UGS234J.mjs.map +7 -0
  27. package/dist/lib/browser/operations/index.mjs +14 -0
  28. package/dist/lib/browser/operations/index.mjs.map +7 -0
  29. package/dist/lib/browser/restore-KKQHFLYO.mjs +33 -0
  30. package/dist/lib/browser/restore-KKQHFLYO.mjs.map +7 -0
  31. package/dist/lib/browser/restore-message-YN4BJQIZ.mjs +42 -0
  32. package/dist/lib/browser/restore-message-YN4BJQIZ.mjs.map +7 -0
  33. package/dist/lib/browser/select-VBJ3MBLN.mjs +26 -0
  34. package/dist/lib/browser/select-VBJ3MBLN.mjs.map +7 -0
  35. package/dist/lib/browser/toggle-resolved-OX7UEZG5.mjs +45 -0
  36. package/dist/lib/browser/toggle-resolved-OX7UEZG5.mjs.map +7 -0
  37. package/dist/lib/browser/types/index.mjs +6 -8
  38. package/dist/lib/node-esm/add-message-X6IRTANN.mjs +98 -0
  39. package/dist/lib/node-esm/add-message-X6IRTANN.mjs.map +7 -0
  40. package/dist/lib/node-esm/blueprints/index.mjs +38 -0
  41. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  42. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  43. package/dist/lib/node-esm/chunk-I6LAZYVU.mjs +260 -0
  44. package/dist/lib/node-esm/chunk-I6LAZYVU.mjs.map +7 -0
  45. package/dist/lib/node-esm/chunk-UGSMYQLZ.mjs +62 -0
  46. package/dist/lib/node-esm/chunk-UGSMYQLZ.mjs.map +7 -0
  47. package/dist/lib/node-esm/create-A6XQZR7M.mjs +56 -0
  48. package/dist/lib/node-esm/create-A6XQZR7M.mjs.map +7 -0
  49. package/dist/lib/node-esm/create-channel-KA5T23ZS.mjs +22 -0
  50. package/dist/lib/node-esm/create-channel-KA5T23ZS.mjs.map +7 -0
  51. package/dist/lib/node-esm/create-channel-thread-44PXAPGM.mjs +29 -0
  52. package/dist/lib/node-esm/create-channel-thread-44PXAPGM.mjs.map +7 -0
  53. package/dist/lib/node-esm/create-proposals-HDBVDNUX.mjs +58 -0
  54. package/dist/lib/node-esm/create-proposals-HDBVDNUX.mjs.map +7 -0
  55. package/dist/lib/node-esm/delete-3RAWD5GG.mjs +60 -0
  56. package/dist/lib/node-esm/delete-3RAWD5GG.mjs.map +7 -0
  57. package/dist/lib/node-esm/delete-message-QQHNJBHY.mjs +65 -0
  58. package/dist/lib/node-esm/delete-message-QQHNJBHY.mjs.map +7 -0
  59. package/dist/lib/node-esm/index.mjs +2249 -227
  60. package/dist/lib/node-esm/index.mjs.map +4 -4
  61. package/dist/lib/node-esm/meta.json +1 -1
  62. package/dist/lib/node-esm/on-create-space-ZURB6UKR.mjs +26 -0
  63. package/dist/lib/node-esm/on-create-space-ZURB6UKR.mjs.map +7 -0
  64. package/dist/lib/node-esm/operations/index.mjs +15 -0
  65. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  66. package/dist/lib/node-esm/restore-PDYEKDE3.mjs +34 -0
  67. package/dist/lib/node-esm/restore-PDYEKDE3.mjs.map +7 -0
  68. package/dist/lib/node-esm/restore-message-OB32YYKF.mjs +43 -0
  69. package/dist/lib/node-esm/restore-message-OB32YYKF.mjs.map +7 -0
  70. package/dist/lib/node-esm/select-6KETLVWY.mjs +27 -0
  71. package/dist/lib/node-esm/select-6KETLVWY.mjs.map +7 -0
  72. package/dist/lib/node-esm/toggle-resolved-V74EBRQZ.mjs +46 -0
  73. package/dist/lib/node-esm/toggle-resolved-V74EBRQZ.mjs.map +7 -0
  74. package/dist/lib/node-esm/types/index.mjs +6 -8
  75. package/dist/types/src/ThreadPlugin.d.ts +2 -1
  76. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  77. package/dist/types/src/blueprints/index.d.ts +2 -0
  78. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  79. package/dist/types/src/blueprints/thread-blueprint.d.ts +4 -0
  80. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
  81. package/dist/types/src/calls/call-manager.d.ts +40 -30
  82. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  83. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +2 -2
  84. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  85. package/dist/types/src/calls/media-manager.d.ts +1 -1
  86. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  87. package/dist/types/src/calls/util/calls-service.d.ts +1 -1
  88. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  89. package/dist/types/src/calls/util/task-scheduling.d.ts +2 -2
  90. package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -1
  91. package/dist/types/src/calls-service.stories.d.ts +2 -2
  92. package/dist/types/src/calls-service.stories.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  94. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -4
  96. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/call-manager.d.ts +3 -2
  98. package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/index.d.ts +13 -14
  100. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/markdown.d.ts +3 -2
  102. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  104. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/react-root.d.ts +4 -2
  106. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  108. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/settings.d.ts +4 -2
  110. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/state.d.ts +5 -5
  112. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/undo-mappings.d.ts +5 -0
  114. package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -0
  115. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  116. package/dist/types/src/components/Call/Toolbar.d.ts +1 -1
  117. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  118. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts +13 -0
  119. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts.map +1 -0
  120. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts +160 -0
  121. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts.map +1 -0
  122. package/dist/types/src/components/{CommentsThreadContainer.d.ts → CommentsPanel/CommentsThread.d.ts} +3 -3
  123. package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts.map +1 -0
  124. package/dist/types/src/components/CommentsPanel/index.d.ts +3 -0
  125. package/dist/types/src/components/CommentsPanel/index.d.ts.map +1 -0
  126. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  127. package/dist/types/src/components/Media/VideoObject.d.ts +1 -1
  128. package/dist/types/src/components/Media/VideoObject.stories.d.ts +1 -1
  129. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts +15 -0
  131. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts.map +1 -0
  132. package/dist/types/src/components/MessagePanel/index.d.ts +2 -0
  133. package/dist/types/src/components/MessagePanel/index.d.ts.map +1 -0
  134. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  135. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
  136. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts.map +1 -1
  137. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +142 -140
  138. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  139. package/dist/types/src/components/ResponsiveGrid/{ResponsiveContainer.d.ts → ResponsivePanel.d.ts} +4 -4
  140. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.d.ts.map +1 -0
  141. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.stories.d.ts +164 -0
  142. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.stories.d.ts.map +1 -0
  143. package/dist/types/src/components/ResponsiveGrid/index.d.ts +1 -1
  144. package/dist/types/src/components/ResponsiveGrid/index.d.ts.map +1 -1
  145. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts +6 -0
  146. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts.map +1 -0
  147. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts +161 -0
  148. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts.map +1 -0
  149. package/dist/types/src/components/ThreadSettings/index.d.ts +2 -0
  150. package/dist/types/src/components/ThreadSettings/index.d.ts.map +1 -0
  151. package/dist/types/src/components/index.d.ts +4 -9
  152. package/dist/types/src/components/index.d.ts.map +1 -1
  153. package/dist/types/src/{components → containers/CallDebugPanel}/CallDebugPanel.d.ts +1 -1
  154. package/dist/types/src/containers/CallDebugPanel/CallDebugPanel.d.ts.map +1 -0
  155. package/dist/types/src/containers/CallDebugPanel/index.d.ts +2 -0
  156. package/dist/types/src/containers/CallDebugPanel/index.d.ts.map +1 -0
  157. package/dist/types/src/{components → containers/CallSidebar}/CallSidebar.d.ts +0 -1
  158. package/dist/types/src/containers/CallSidebar/CallSidebar.d.ts.map +1 -0
  159. package/dist/types/src/containers/CallSidebar/index.d.ts +2 -0
  160. package/dist/types/src/containers/CallSidebar/index.d.ts.map +1 -0
  161. package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts +12 -0
  162. package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts.map +1 -0
  163. package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts +162 -0
  164. package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts.map +1 -0
  165. package/dist/types/src/containers/ChannelContainer/index.d.ts +2 -0
  166. package/dist/types/src/containers/ChannelContainer/index.d.ts.map +1 -0
  167. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts +20 -0
  168. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +1 -0
  169. package/dist/types/src/containers/ChatContainer/ChatContainer.stories.d.ts +162 -0
  170. package/dist/types/src/containers/ChatContainer/ChatContainer.stories.d.ts.map +1 -0
  171. package/dist/types/src/containers/ChatContainer/index.d.ts +4 -0
  172. package/dist/types/src/containers/ChatContainer/index.d.ts.map +1 -0
  173. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts +8 -0
  174. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts.map +1 -0
  175. package/dist/types/src/containers/ThreadCompanion/index.d.ts +2 -0
  176. package/dist/types/src/containers/ThreadCompanion/index.d.ts.map +1 -0
  177. package/dist/types/src/containers/index.d.ts +7 -0
  178. package/dist/types/src/containers/index.d.ts.map +1 -0
  179. package/dist/types/src/{components/command-extension.d.ts → extensions/command.d.ts} +1 -1
  180. package/dist/types/src/extensions/command.d.ts.map +1 -0
  181. package/dist/types/src/extensions/index.d.ts +1 -0
  182. package/dist/types/src/extensions/index.d.ts.map +1 -1
  183. package/dist/types/src/extensions/threads.d.ts +8 -3
  184. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  185. package/dist/types/src/hooks/analytics.d.ts +1 -2
  186. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  187. package/dist/types/src/index.d.ts +1 -1
  188. package/dist/types/src/index.d.ts.map +1 -1
  189. package/dist/types/src/meta.d.ts +2 -2
  190. package/dist/types/src/meta.d.ts.map +1 -1
  191. package/dist/types/src/operations/add-message.d.ts +5 -0
  192. package/dist/types/src/operations/add-message.d.ts.map +1 -0
  193. package/dist/types/src/operations/create-channel-thread.d.ts +5 -0
  194. package/dist/types/src/operations/create-channel-thread.d.ts.map +1 -0
  195. package/dist/types/src/operations/create-channel.d.ts +5 -0
  196. package/dist/types/src/operations/create-channel.d.ts.map +1 -0
  197. package/dist/types/src/operations/create-proposals.d.ts +5 -0
  198. package/dist/types/src/operations/create-proposals.d.ts.map +1 -0
  199. package/dist/types/src/operations/create.d.ts +5 -0
  200. package/dist/types/src/operations/create.d.ts.map +1 -0
  201. package/dist/types/src/operations/definitions.d.ts +2789 -0
  202. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  203. package/dist/types/src/operations/delete-message.d.ts +5 -0
  204. package/dist/types/src/operations/delete-message.d.ts.map +1 -0
  205. package/dist/types/src/operations/delete.d.ts +5 -0
  206. package/dist/types/src/operations/delete.d.ts.map +1 -0
  207. package/dist/types/src/operations/index.d.ts +4 -0
  208. package/dist/types/src/operations/index.d.ts.map +1 -0
  209. package/dist/types/src/operations/on-create-space.d.ts +5 -0
  210. package/dist/types/src/operations/on-create-space.d.ts.map +1 -0
  211. package/dist/types/src/operations/restore-message.d.ts +5 -0
  212. package/dist/types/src/operations/restore-message.d.ts.map +1 -0
  213. package/dist/types/src/operations/restore.d.ts +5 -0
  214. package/dist/types/src/operations/restore.d.ts.map +1 -0
  215. package/dist/types/src/operations/select.d.ts +5 -0
  216. package/dist/types/src/operations/select.d.ts.map +1 -0
  217. package/dist/types/src/operations/toggle-resolved.d.ts +5 -0
  218. package/dist/types/src/operations/toggle-resolved.d.ts.map +1 -0
  219. package/dist/types/src/{components/testing.d.ts → testing/data.d.ts} +2 -2
  220. package/dist/types/src/testing/data.d.ts.map +1 -0
  221. package/dist/types/src/testing/stories.d.ts +2 -1
  222. package/dist/types/src/testing/stories.d.ts.map +1 -1
  223. package/dist/types/src/translations.d.ts +140 -138
  224. package/dist/types/src/translations.d.ts.map +1 -1
  225. package/dist/types/src/types/Channel.d.ts +707 -12
  226. package/dist/types/src/types/Channel.d.ts.map +1 -1
  227. package/dist/types/src/types/Settings.d.ts +4 -0
  228. package/dist/types/src/types/Settings.d.ts.map +1 -0
  229. package/dist/types/src/types/capabilities.d.ts +23 -0
  230. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  231. package/dist/types/src/types/index.d.ts +1 -1
  232. package/dist/types/src/types/index.d.ts.map +1 -1
  233. package/dist/types/src/types/types.d.ts +2 -369
  234. package/dist/types/src/types/types.d.ts.map +1 -1
  235. package/dist/types/src/util.d.ts.map +1 -1
  236. package/dist/types/tsconfig.tsbuildinfo +1 -1
  237. package/package.json +108 -69
  238. package/src/ThreadPlugin.tsx +76 -114
  239. package/src/blueprints/index.ts +5 -0
  240. package/src/blueprints/thread-blueprint.ts +37 -0
  241. package/src/calls/call-manager.ts +76 -52
  242. package/src/calls/call-swarm-synchronizer.ts +2 -2
  243. package/src/calls/media-manager.ts +1 -1
  244. package/src/calls/util/calls-service.ts +1 -2
  245. package/src/calls/util/task-scheduling.ts +4 -4
  246. package/src/calls-service.stories.tsx +10 -9
  247. package/src/capabilities/app-graph-builder.ts +171 -172
  248. package/src/capabilities/blueprint-definition.ts +9 -30
  249. package/src/capabilities/call-manager.ts +19 -12
  250. package/src/capabilities/index.ts +15 -12
  251. package/src/capabilities/markdown.ts +50 -39
  252. package/src/capabilities/operation-handler.ts +16 -0
  253. package/src/capabilities/react-root.tsx +12 -9
  254. package/src/capabilities/react-surface.tsx +79 -79
  255. package/src/capabilities/settings.ts +28 -12
  256. package/src/capabilities/state.ts +14 -18
  257. package/src/capabilities/undo-mappings.ts +46 -0
  258. package/src/components/Call/Call.tsx +11 -7
  259. package/src/components/Call/Toolbar.tsx +55 -38
  260. package/src/components/CommentsPanel/CommentsPanel.stories.tsx +93 -0
  261. package/src/components/{CommentsContainer.tsx → CommentsPanel/CommentsPanel.tsx} +16 -16
  262. package/src/components/{CommentsThreadContainer.tsx → CommentsPanel/CommentsThread.tsx} +29 -31
  263. package/src/components/CommentsPanel/index.ts +6 -0
  264. package/src/components/Lobby/Lobby.tsx +15 -12
  265. package/src/components/Media/AudioStream.tsx +2 -2
  266. package/src/components/Media/VideoObject.stories.tsx +6 -7
  267. package/src/components/Media/VideoObject.tsx +2 -2
  268. package/src/components/{MessageContainer.tsx → MessagePanel/MessagePanel.tsx} +75 -38
  269. package/src/components/MessagePanel/index.ts +5 -0
  270. package/src/components/Participant/Participant.tsx +33 -19
  271. package/src/components/Participant/ParticipantGrid.tsx +0 -1
  272. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +10 -11
  273. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +9 -9
  274. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +10 -10
  275. package/src/components/ResponsiveGrid/{ResponsiveContainer.stories.tsx → ResponsivePanel.stories.tsx} +7 -8
  276. package/src/components/ResponsiveGrid/{ResponsiveContainer.tsx → ResponsivePanel.tsx} +6 -6
  277. package/src/components/ResponsiveGrid/index.ts +1 -1
  278. package/src/components/ThreadSettings/ThreadSettings.stories.tsx +31 -0
  279. package/src/components/ThreadSettings/ThreadSettings.tsx +20 -0
  280. package/src/components/ThreadSettings/index.ts +5 -0
  281. package/src/components/index.ts +4 -11
  282. package/src/{components → containers/CallDebugPanel}/CallDebugPanel.tsx +8 -7
  283. package/src/containers/CallDebugPanel/index.ts +5 -0
  284. package/src/containers/CallSidebar/CallSidebar.tsx +18 -0
  285. package/src/containers/CallSidebar/index.ts +5 -0
  286. package/src/containers/ChannelContainer/ChannelContainer.stories.tsx +61 -0
  287. package/src/{components → containers/ChannelContainer}/ChannelContainer.tsx +90 -72
  288. package/src/containers/ChannelContainer/index.ts +5 -0
  289. package/src/{components/Chat.stories.tsx → containers/ChatContainer/ChatContainer.stories.tsx} +23 -21
  290. package/src/containers/ChatContainer/ChatContainer.tsx +131 -0
  291. package/src/containers/ChatContainer/index.ts +8 -0
  292. package/src/containers/ThreadCompanion/ThreadCompanion.tsx +217 -0
  293. package/src/containers/ThreadCompanion/index.ts +5 -0
  294. package/src/containers/index.ts +11 -0
  295. package/src/{components/command-extension.ts → extensions/command.ts} +3 -3
  296. package/src/extensions/index.ts +1 -0
  297. package/src/extensions/threads.ts +79 -43
  298. package/src/hooks/analytics.ts +24 -20
  299. package/src/index.ts +1 -1
  300. package/src/meta.ts +4 -4
  301. package/src/operations/add-message.ts +81 -0
  302. package/src/operations/create-channel-thread.ts +26 -0
  303. package/src/operations/create-channel.ts +20 -0
  304. package/src/operations/create-proposals.ts +49 -0
  305. package/src/operations/create.ts +48 -0
  306. package/src/operations/definitions.ts +177 -0
  307. package/src/operations/delete-message.ts +53 -0
  308. package/src/operations/delete.ts +63 -0
  309. package/src/operations/index.ts +22 -0
  310. package/src/operations/on-create-space.ts +27 -0
  311. package/src/operations/restore-message.ts +38 -0
  312. package/src/operations/restore.ts +38 -0
  313. package/src/operations/select.ts +24 -0
  314. package/src/operations/toggle-resolved.ts +41 -0
  315. package/src/{components/testing.ts → testing/data.ts} +8 -10
  316. package/src/testing/stories.ts +17 -17
  317. package/src/translations.ts +72 -74
  318. package/src/types/Channel.ts +21 -11
  319. package/src/types/Settings.ts +10 -0
  320. package/src/types/capabilities.ts +36 -0
  321. package/src/types/index.ts +1 -1
  322. package/src/types/types.ts +3 -98
  323. package/src/util.ts +1 -1
  324. package/dist/lib/browser/ChannelContainer-MX5ABVGC.mjs +0 -16
  325. package/dist/lib/browser/ChatContainer-7F5Y6GXJ.mjs +0 -15
  326. package/dist/lib/browser/app-graph-builder-HNYLII5E.mjs +0 -170
  327. package/dist/lib/browser/app-graph-builder-HNYLII5E.mjs.map +0 -7
  328. package/dist/lib/browser/blueprint-definition-6BKYTMJS.mjs +0 -104
  329. package/dist/lib/browser/blueprint-definition-6BKYTMJS.mjs.map +0 -7
  330. package/dist/lib/browser/call-manager-MAXQLMMS.mjs +0 -24
  331. package/dist/lib/browser/call-manager-MAXQLMMS.mjs.map +0 -7
  332. package/dist/lib/browser/chunk-BBTXGRIR.mjs +0 -18
  333. package/dist/lib/browser/chunk-BBTXGRIR.mjs.map +0 -7
  334. package/dist/lib/browser/chunk-BQWQFTWT.mjs +0 -612
  335. package/dist/lib/browser/chunk-BQWQFTWT.mjs.map +0 -7
  336. package/dist/lib/browser/chunk-CP7E2HRE.mjs +0 -31
  337. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +0 -7
  338. package/dist/lib/browser/chunk-FR6MEAZI.mjs +0 -377
  339. package/dist/lib/browser/chunk-FR6MEAZI.mjs.map +0 -7
  340. package/dist/lib/browser/chunk-INQVAYPN.mjs +0 -989
  341. package/dist/lib/browser/chunk-INQVAYPN.mjs.map +0 -7
  342. package/dist/lib/browser/chunk-ISCHODBV.mjs +0 -106
  343. package/dist/lib/browser/chunk-ISCHODBV.mjs.map +0 -7
  344. package/dist/lib/browser/chunk-K2DUJRFJ.mjs +0 -27
  345. package/dist/lib/browser/chunk-K2DUJRFJ.mjs.map +0 -7
  346. package/dist/lib/browser/chunk-KOBXMDCI.mjs +0 -182
  347. package/dist/lib/browser/chunk-KOBXMDCI.mjs.map +0 -7
  348. package/dist/lib/browser/chunk-NMJEVD36.mjs +0 -168
  349. package/dist/lib/browser/chunk-NMJEVD36.mjs.map +0 -7
  350. package/dist/lib/browser/chunk-OOUDK7Q7.mjs +0 -23
  351. package/dist/lib/browser/chunk-OOUDK7Q7.mjs.map +0 -7
  352. package/dist/lib/browser/chunk-ZCW3NSDZ.mjs +0 -1793
  353. package/dist/lib/browser/chunk-ZCW3NSDZ.mjs.map +0 -7
  354. package/dist/lib/browser/intent-resolver-BOUT4WGY.mjs +0 -361
  355. package/dist/lib/browser/intent-resolver-BOUT4WGY.mjs.map +0 -7
  356. package/dist/lib/browser/markdown-74EUSQGV.mjs +0 -171
  357. package/dist/lib/browser/markdown-74EUSQGV.mjs.map +0 -7
  358. package/dist/lib/browser/react-root-BVG7B2LW.mjs +0 -28
  359. package/dist/lib/browser/react-root-BVG7B2LW.mjs.map +0 -7
  360. package/dist/lib/browser/react-surface-BCD5ODQ6.mjs +0 -110
  361. package/dist/lib/browser/react-surface-BCD5ODQ6.mjs.map +0 -7
  362. package/dist/lib/browser/settings-LGQUZITB.mjs +0 -22
  363. package/dist/lib/browser/settings-LGQUZITB.mjs.map +0 -7
  364. package/dist/lib/browser/state-36REWXO5.mjs +0 -34
  365. package/dist/lib/browser/state-36REWXO5.mjs.map +0 -7
  366. package/dist/lib/node-esm/ChannelContainer-2JJJ3IDK.mjs +0 -17
  367. package/dist/lib/node-esm/ChannelContainer-2JJJ3IDK.mjs.map +0 -7
  368. package/dist/lib/node-esm/ChatContainer-C526R4DI.mjs +0 -16
  369. package/dist/lib/node-esm/ChatContainer-C526R4DI.mjs.map +0 -7
  370. package/dist/lib/node-esm/app-graph-builder-SOCKP4ST.mjs +0 -171
  371. package/dist/lib/node-esm/app-graph-builder-SOCKP4ST.mjs.map +0 -7
  372. package/dist/lib/node-esm/blueprint-definition-6LEAWSC7.mjs +0 -105
  373. package/dist/lib/node-esm/blueprint-definition-6LEAWSC7.mjs.map +0 -7
  374. package/dist/lib/node-esm/call-manager-LC4OS2KD.mjs +0 -25
  375. package/dist/lib/node-esm/call-manager-LC4OS2KD.mjs.map +0 -7
  376. package/dist/lib/node-esm/chunk-5DLH4MWN.mjs +0 -25
  377. package/dist/lib/node-esm/chunk-5DLH4MWN.mjs.map +0 -7
  378. package/dist/lib/node-esm/chunk-7KZWZS2U.mjs +0 -1794
  379. package/dist/lib/node-esm/chunk-7KZWZS2U.mjs.map +0 -7
  380. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs +0 -33
  381. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +0 -7
  382. package/dist/lib/node-esm/chunk-JF7THR7F.mjs +0 -990
  383. package/dist/lib/node-esm/chunk-JF7THR7F.mjs.map +0 -7
  384. package/dist/lib/node-esm/chunk-JJW6YMLC.mjs +0 -613
  385. package/dist/lib/node-esm/chunk-JJW6YMLC.mjs.map +0 -7
  386. package/dist/lib/node-esm/chunk-PZH2EDU5.mjs +0 -183
  387. package/dist/lib/node-esm/chunk-PZH2EDU5.mjs.map +0 -7
  388. package/dist/lib/node-esm/chunk-TJKM5JZT.mjs +0 -169
  389. package/dist/lib/node-esm/chunk-TJKM5JZT.mjs.map +0 -7
  390. package/dist/lib/node-esm/chunk-TWKGDFCS.mjs +0 -378
  391. package/dist/lib/node-esm/chunk-TWKGDFCS.mjs.map +0 -7
  392. package/dist/lib/node-esm/chunk-VBI32FGI.mjs +0 -108
  393. package/dist/lib/node-esm/chunk-VBI32FGI.mjs.map +0 -7
  394. package/dist/lib/node-esm/chunk-XI45H4IV.mjs +0 -28
  395. package/dist/lib/node-esm/chunk-XI45H4IV.mjs.map +0 -7
  396. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs +0 -19
  397. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs.map +0 -7
  398. package/dist/lib/node-esm/intent-resolver-45PLIFCJ.mjs +0 -362
  399. package/dist/lib/node-esm/intent-resolver-45PLIFCJ.mjs.map +0 -7
  400. package/dist/lib/node-esm/markdown-566XXB55.mjs +0 -172
  401. package/dist/lib/node-esm/markdown-566XXB55.mjs.map +0 -7
  402. package/dist/lib/node-esm/react-root-DCY6DKLC.mjs +0 -29
  403. package/dist/lib/node-esm/react-root-DCY6DKLC.mjs.map +0 -7
  404. package/dist/lib/node-esm/react-surface-WZH7OAO3.mjs +0 -111
  405. package/dist/lib/node-esm/react-surface-WZH7OAO3.mjs.map +0 -7
  406. package/dist/lib/node-esm/settings-WKLJSP6R.mjs +0 -23
  407. package/dist/lib/node-esm/settings-WKLJSP6R.mjs.map +0 -7
  408. package/dist/lib/node-esm/state-X3W67GTL.mjs +0 -35
  409. package/dist/lib/node-esm/state-X3W67GTL.mjs.map +0 -7
  410. package/dist/types/src/capabilities/capabilities.d.ts +0 -27
  411. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  412. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  413. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  414. package/dist/types/src/components/CallDebugPanel.d.ts.map +0 -1
  415. package/dist/types/src/components/CallSidebar.d.ts.map +0 -1
  416. package/dist/types/src/components/ChannelContainer.d.ts +0 -14
  417. package/dist/types/src/components/ChannelContainer.d.ts.map +0 -1
  418. package/dist/types/src/components/ChannelContainer.stories.d.ts +0 -160
  419. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +0 -1
  420. package/dist/types/src/components/Chat.stories.d.ts +0 -160
  421. package/dist/types/src/components/Chat.stories.d.ts.map +0 -1
  422. package/dist/types/src/components/ChatContainer.d.ts +0 -18
  423. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  424. package/dist/types/src/components/Comments.stories.d.ts +0 -158
  425. package/dist/types/src/components/Comments.stories.d.ts.map +0 -1
  426. package/dist/types/src/components/CommentsContainer.d.ts +0 -13
  427. package/dist/types/src/components/CommentsContainer.d.ts.map +0 -1
  428. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +0 -1
  429. package/dist/types/src/components/MessageContainer.d.ts +0 -14
  430. package/dist/types/src/components/MessageContainer.d.ts.map +0 -1
  431. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts.map +0 -1
  432. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +0 -162
  433. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +0 -1
  434. package/dist/types/src/components/ThreadCompanion.d.ts +0 -5
  435. package/dist/types/src/components/ThreadCompanion.d.ts.map +0 -1
  436. package/dist/types/src/components/ThreadSettings.d.ts +0 -6
  437. package/dist/types/src/components/ThreadSettings.d.ts.map +0 -1
  438. package/dist/types/src/components/command-extension.d.ts.map +0 -1
  439. package/dist/types/src/components/testing.d.ts.map +0 -1
  440. package/dist/types/src/functions/create-proposals.d.ts +0 -6
  441. package/dist/types/src/functions/create-proposals.d.ts.map +0 -1
  442. package/dist/types/src/functions/index.d.ts +0 -2
  443. package/dist/types/src/functions/index.d.ts.map +0 -1
  444. package/dist/types/src/types/Thread.d.ts +0 -167
  445. package/dist/types/src/types/Thread.d.ts.map +0 -1
  446. package/src/capabilities/capabilities.ts +0 -33
  447. package/src/capabilities/intent-resolver.ts +0 -311
  448. package/src/components/CallSidebar.tsx +0 -18
  449. package/src/components/ChannelContainer.stories.tsx +0 -59
  450. package/src/components/ChatContainer.tsx +0 -154
  451. package/src/components/Comments.stories.tsx +0 -91
  452. package/src/components/ThreadCompanion.tsx +0 -188
  453. package/src/components/ThreadSettings.tsx +0 -16
  454. package/src/functions/create-proposals.ts +0 -58
  455. package/src/functions/index.ts +0 -5
  456. package/src/types/Thread.ts +0 -26
  457. /package/dist/lib/browser/{ChannelContainer-MX5ABVGC.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  458. /package/dist/lib/{browser/ChatContainer-7F5Y6GXJ.mjs.map → node-esm/chunk-HSLMI22Q.mjs.map} +0 -0
@@ -2,27 +2,30 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { IntentPlugin, SettingsPlugin } from '@dxos/app-framework';
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { type Plugin } from '@dxos/app-framework';
6
8
  import { ClientPlugin } from '@dxos/plugin-client';
7
- import { GraphPlugin } from '@dxos/plugin-graph';
8
9
  import { SpacePlugin } from '@dxos/plugin-space';
9
- import { ThemePlugin } from '@dxos/plugin-theme';
10
+ import { corePlugins } from '@dxos/plugin-testing';
10
11
  import { Config } from '@dxos/react-client';
11
- import { defaultTx } from '@dxos/react-ui-theme';
12
+
13
+ import { Channel } from '#types';
12
14
 
13
15
  import { ThreadPlugin } from '../ThreadPlugin';
14
- import { Channel } from '../types';
15
16
 
16
- export const createThreadPlugins = async () => [
17
- ThemePlugin({ tx: defaultTx }),
17
+ export const createThreadPlugins = async (): Promise<Array<Plugin.Plugin>> => [
18
+ ...corePlugins(),
18
19
  ClientPlugin({
19
- onClientInitialized: async ({ client }) => {
20
- await client.halo.createIdentity({ displayName: 'Test User' });
21
- },
22
- onSpacesReady: async ({ client }) => {
23
- await client.spaces.default.waitUntilReady();
24
- client.spaces.default.db.add(Channel.make());
25
- },
20
+ onClientInitialized: ({ client }) =>
21
+ Effect.gen(function* () {
22
+ yield* Effect.promise(() => client.halo.createIdentity({ displayName: 'Test User' }));
23
+ }),
24
+ onSpacesReady: ({ client }) =>
25
+ Effect.gen(function* () {
26
+ const space = client.spaces.get()[0];
27
+ space.db.add(Channel.make());
28
+ }),
26
29
  config: new Config({
27
30
  runtime: {
28
31
  client: {
@@ -44,8 +47,5 @@ export const createThreadPlugins = async () => [
44
47
  }),
45
48
  }),
46
49
  SpacePlugin({}),
47
- IntentPlugin(),
48
- SettingsPlugin(),
49
- GraphPlugin(),
50
50
  ThreadPlugin(),
51
51
  ];
@@ -5,94 +5,92 @@
5
5
  import { Type } from '@dxos/echo';
6
6
  import { type Resource } from '@dxos/react-ui';
7
7
 
8
- import { meta } from './meta';
9
- import { Channel } from './types';
8
+ import { meta } from '#meta';
9
+ import { Channel } from '#types';
10
10
 
11
11
  export const translations = [
12
12
  {
13
13
  'en-US': {
14
14
  [Type.getTypename(Channel.Channel)]: {
15
- 'typename label': 'Channel',
16
- 'typename label_zero': 'Channels',
17
- 'typename label_one': 'Channel',
18
- 'typename label_other': 'Channels',
19
- 'object name placeholder': 'New channel',
20
- 'rename object label': 'Rename channel',
21
- 'delete object label': 'Delete channel',
15
+ 'typename.label': 'Channel',
16
+ 'typename.label_zero': 'Channels',
17
+ 'typename.label_one': 'Channel',
18
+ 'typename.label_other': 'Channels',
19
+ 'object-name.placeholder': 'New channel',
20
+ 'add-object.label': 'Add channel',
21
+ 'rename-object.label': 'Rename channel',
22
+ 'delete-object.label': 'Delete channel',
23
+ 'object-deleted.label': 'Channel deleted',
22
24
  },
23
25
  [meta.id]: {
24
- 'plugin name': 'Chat',
25
- 'channel title label': 'Title',
26
- 'message placeholder': 'Reply…',
27
- 'activity message': 'Processing…',
28
- 'anonymous label': 'Anonymous',
29
- 'delete message block label': 'Delete message block',
30
- 'detached thread label': 'Referenced content was removed',
31
- 'delete thread label': 'Delete thread',
32
- 'resolve thread label': 'Resolve thread',
33
- 'thread deleted label': 'Thread deleted',
34
- 'message deleted label': 'Message deleted',
35
- 'comments heading': 'Comments',
36
- 'chat heading': 'Chat',
37
- 'draft button': 'DRAFT',
38
- 'no comments title': 'Comments',
39
- 'no comments message':
26
+ 'plugin.name': 'Chat',
27
+ 'channel-title.label': 'Title',
28
+ 'message.placeholder': 'Reply…',
29
+ 'activity.message': 'Processing…',
30
+ 'anonymous.label': 'Anonymous',
31
+ 'delete-message-block.label': 'Delete message block',
32
+ 'detached-thread.label': 'Referenced content was removed',
33
+ 'delete-thread.label': 'Delete thread',
34
+ 'resolve-thread.label': 'Resolve thread',
35
+ 'thread-deleted.label': 'Thread deleted',
36
+ 'message-deleted.label': 'Message deleted',
37
+ 'comments.heading': 'Comments',
38
+ 'chat.heading': 'Chat',
39
+ 'draft.button': 'DRAFT',
40
+ 'no-comments.title': 'Comments',
41
+ 'no-comments.message':
40
42
  'Click on the <commentIcon></commentIcon> button in the document toolbar to create a comment thread on the selected text.',
41
- 'toggle show resolved': 'Show resolved',
42
- 'unnamed object threads label': 'Threads',
43
- 'mark as resolved label': 'Mark as resolved',
44
- 'mark as unresolved label': 'Mark as unresolved',
45
- 'save message label': 'Save',
46
- 'edit message label': 'Edit',
47
- 'delete message label': 'Delete message',
48
- 'accept proposal label': 'Accept proposal',
49
- 'open comments panel label': 'Show Comments',
50
- 'comments label': 'Comments',
51
- 'show all label': 'All comments',
52
- 'show unresolved label': 'Unresolved comments',
43
+ 'toggle-show-resolved.label': 'Show resolved',
44
+ 'unnamed-object-threads.label': 'Threads',
45
+ 'mark-as-resolved.label': 'Mark as resolved',
46
+ 'mark-as-unresolved.label': 'Mark as unresolved',
47
+ 'save-message.label': 'Save',
48
+ 'edit-message.label': 'Edit',
49
+ 'delete-message.label': 'Delete message',
50
+ 'accept-proposal.label': 'Accept proposal',
51
+ 'open-comments-panel.label': 'Show Comments',
52
+ 'comments.label': 'Comments',
53
+ 'show-all.label': 'All comments',
54
+ 'show-unresolved.label': 'Unresolved comments',
55
+ 'add-comment.label': 'Add comment',
53
56
 
54
- 'channel companion label': 'Channel',
55
- 'call panel label': 'Active Call',
57
+ 'channel-companion.label': 'Channel',
58
+ 'call-panel.label': 'Active Call',
56
59
 
57
- 'display name label': 'Display name',
58
- 'display name description': 'Set your display name before joining a meeting.',
59
- 'display name input placeholder': 'Enter your name',
60
- 'set display name label': 'Continue',
60
+ 'display-name.label': 'Display name',
61
+ 'display-name.description': 'Set your display name before joining a meeting.',
62
+ 'display-name-input.placeholder': 'Enter your name',
63
+ 'set-display-name.label': 'Continue',
61
64
 
62
- 'call tab label': 'Call',
63
- 'meeting status title': 'Calls',
64
- 'share meeting link label': 'Share meeting',
65
- 'show webrtc stats title': 'WebRTC Stats',
66
- 'show calls history title': 'Service History',
65
+ 'call-tab.label': 'Call',
66
+ 'meeting-status.title': 'Calls',
67
+ 'share-meeting-link.label': 'Share meeting',
68
+ 'show-webrtc-stats.title': 'WebRTC Stats',
69
+ 'show-calls-history.title': 'Service History',
67
70
 
68
- 'meeting summary label': 'Summary',
69
- 'summarize label': 'Summarize',
70
- 'summarizing label': 'Creating summary...',
71
- 'create summary message': 'A summary doesn’t exist for this meeting yet. Create one now?',
71
+ 'meeting-summary.label': 'Summary',
72
+ 'summarize.label': 'Summarize',
73
+ 'summarizing.label': 'Creating summary...',
74
+ 'create-summary.message': 'A summary doesn’t exist for this meeting yet. Create one now?',
72
75
 
73
- 'join call': 'Join',
74
- 'leave call': 'Leave',
76
+ 'icon-pin.label': 'Pin video',
77
+ 'icon-unpin.label': 'Unpin video',
78
+ 'icon-wave.label': 'Waving',
79
+ 'icon-muted.label': 'Muted',
80
+ 'join-call.button': 'Join',
81
+ 'leave-call.button': 'Leave',
82
+ 'mic-on.button': 'Unmute',
83
+ 'mic-off.button': 'Mute',
84
+ 'camera-on.button': 'Turn camera on',
85
+ 'camera-off.button': 'Turn camera off',
86
+ 'camera-off.label': 'Camera off',
87
+ 'raise-hand.button': 'Raise hand',
88
+ 'lower-hand.button': 'Lower hand',
89
+ 'screenshare-on.button': 'Share screen',
90
+ 'screenshare-off.button': 'Stop streaming',
75
91
 
76
- 'lobby participants_zero': 'No participants',
77
- 'lobby participants_one': '1 participant',
78
- 'lobby participants_other': '{{count}} participants',
79
-
80
- 'icon pin': 'Pin video',
81
- 'icon unpin': 'Unpin video',
82
- 'icon wave': 'Waving',
83
- 'icon muted': 'Muted',
84
- 'icon speaking': 'Speaking',
85
-
86
- 'mic on': 'Unmute',
87
- 'mic off': 'Mute',
88
- 'camera on': 'Turn camera on',
89
- 'camera off': 'Turn camera off',
90
- 'camera off label': 'Camera off',
91
-
92
- 'raise hand': 'Raise hand',
93
- 'lower hand': 'Lower hand',
94
- 'screenshare on': 'Share screen',
95
- 'screenshare off': 'Stop streaming',
92
+ 'channel-toolbar.title': 'Channel actions',
93
+ 'start-video-call.menu': 'Start video call',
96
94
  },
97
95
  },
98
96
  },
@@ -2,22 +2,32 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import * as Schema from 'effect/Schema';
5
+ // @import-as-namespace
6
6
 
7
- import { Obj, Ref, Type } from '@dxos/echo';
8
- import { FormAnnotation } from '@dxos/echo/internal';
7
+ import * as Schema from 'effect/Schema';
9
8
 
10
- import * as Thread from './Thread';
9
+ import { Annotation, Obj, Ref, Type } from '@dxos/echo';
10
+ import { FormInputAnnotation } from '@dxos/echo/internal';
11
+ import { Thread } from '@dxos/types';
11
12
 
12
- const _Channel = Schema.Struct({
13
+ // TODO(burdon): What is the difference between Thread and Channel.
14
+ export const Channel = Schema.Struct({
13
15
  name: Schema.optional(Schema.String),
14
- defaultThread: Type.Ref(Thread.Thread).pipe(FormAnnotation.set(false)),
16
+ defaultThread: Ref.Ref(Thread.Thread).pipe(FormInputAnnotation.set(false)),
15
17
  // 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;
18
+ threads: Ref.Ref(Thread.Thread).pipe(Schema.Array, FormInputAnnotation.set(false)),
19
+ }).pipe(
20
+ Type.object({
21
+ typename: 'org.dxos.type.channel',
22
+ version: '0.1.0',
23
+ }),
24
+ Annotation.IconAnnotation.set({
25
+ icon: 'ph--hash--regular',
26
+ hue: 'rose',
27
+ }),
28
+ );
29
+
30
+ export interface Channel extends Schema.Schema.Type<typeof Channel> {}
21
31
 
22
32
  export const make = (props: Pick<Obj.MakeProps<typeof Channel>, 'name'> = {}) =>
23
33
  Obj.make(Channel, {
@@ -0,0 +1,10 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ // @import-as-namespace
6
+
7
+ import * as Schema from 'effect/Schema';
8
+
9
+ export const Settings = Schema.mutable(Schema.Struct({}));
10
+ export type Settings = Schema.Schema.Type<typeof Settings>;
@@ -0,0 +1,36 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type Atom } from '@effect-atom/atom-react';
6
+
7
+ import { Capability } from '@dxos/app-framework';
8
+
9
+ import { meta } from '#meta';
10
+
11
+ import { type CallManager, type CallState, type MediaState } from '../calls';
12
+ import { type Channel, type ThreadState, type ViewStore } from '../types';
13
+ import * as Settings from './Settings';
14
+
15
+ export namespace ThreadCapabilities {
16
+ export const Settings = Capability.make<Atom.Writable<Settings.Settings>>(`${meta.id}.capability.settings`);
17
+ export const CallManager = Capability.make<CallManager>(`${meta.id}.capability.call-manager`);
18
+
19
+ // TODO(burdon): Better way to define specific extensions for meeting companions.
20
+ // TODO(burdon): This brings in deps from ../calls; how should we manage/minimize explicit type exposure to other plugins?
21
+ // TODO(wittjosiah): These callbacks could be intents once we support broadcast.
22
+ export type CallProperties = {
23
+ onJoin: (state: { channel?: Channel.Channel; roomId?: string }) => Promise<void>;
24
+ onLeave: (roomId?: string) => Promise<void>;
25
+ onCallStateUpdated: (callState: CallState) => Promise<void>;
26
+ onMediaStateUpdated: ([mediaState, isSpeaking]: [MediaState, boolean]) => Promise<void>;
27
+ };
28
+
29
+ export const CallExtension = Capability.make<CallProperties>(`${meta.id}.capability.call-extension`);
30
+
31
+ /** Thread state (drafts, toolbar state, current selection). */
32
+ export const State = Capability.make<Atom.Writable<ThreadState>>(`${meta.id}.capability.state`);
33
+
34
+ /** Per-subject view state (e.g., showResolvedThreads). */
35
+ export const ViewState = Capability.make<Atom.Writable<ViewStore>>(`${meta.id}.capability.view-state`);
36
+ }
@@ -2,6 +2,6 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ export * from './capabilities';
5
6
  export * as Channel from './Channel';
6
- export * as Thread from './Thread';
7
7
  export * from './types';
@@ -2,105 +2,9 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import * as Schema from 'effect/Schema';
5
+ import { AnchoredTo, Thread } from '@dxos/types';
6
6
 
7
- import { Type } from '@dxos/echo';
8
- import { EchoObjectSchema, SpaceSchema } from '@dxos/react-client/echo';
9
- import { Collection } from '@dxos/schema';
10
- import { Actor, AnchoredTo, Message } from '@dxos/types';
11
-
12
- import { meta } from '../meta';
13
-
14
- import * as Channel from './Channel';
15
- import * as Thread from './Thread';
16
-
17
- export namespace ThreadAction {
18
- export class onCreateSpace extends Schema.TaggedClass<onCreateSpace>()(`${meta.id}/action/on-space-created`, {
19
- input: Schema.Struct({
20
- space: SpaceSchema,
21
- rootCollection: Collection.Collection,
22
- }),
23
- output: Schema.Void,
24
- }) {}
25
-
26
- export class CreateChannel extends Schema.TaggedClass<CreateChannel>()(`${meta.id}/action/create-channel`, {
27
- input: Schema.Struct({
28
- spaceId: Type.SpaceId,
29
- name: Schema.optional(Schema.String),
30
- }),
31
- output: Schema.Struct({
32
- object: Channel.Channel,
33
- }),
34
- }) {}
35
-
36
- export class CreateChannelThread extends Schema.TaggedClass<CreateChannelThread>()(
37
- `${meta.id}/action/create-channel-thread`,
38
- {
39
- input: Schema.Struct({
40
- channel: Channel.Channel,
41
- }),
42
- output: Schema.Struct({
43
- object: Thread.Thread,
44
- }),
45
- },
46
- ) {}
47
-
48
- export class Create extends Schema.TaggedClass<Create>()(`${meta.id}/action/create`, {
49
- input: Schema.Struct({
50
- name: Schema.optional(Schema.String),
51
- anchor: Schema.optional(Schema.String),
52
- subject: EchoObjectSchema,
53
- }),
54
- output: Schema.Void,
55
- }) {}
56
-
57
- export class Delete extends Schema.TaggedClass<Delete>()(`${meta.id}/action/delete`, {
58
- input: Schema.Struct({
59
- anchor: AnchoredTo.AnchoredTo,
60
- subject: EchoObjectSchema,
61
- thread: Schema.optional(Thread.Thread),
62
- }),
63
- output: Schema.Void,
64
- }) {}
65
-
66
- export class Select extends Schema.TaggedClass<Select>()(`${meta.id}/action/select`, {
67
- input: Schema.Struct({
68
- current: Schema.String,
69
- }),
70
- output: Schema.Void,
71
- }) {}
72
-
73
- export class ToggleResolved extends Schema.TaggedClass<ToggleResolved>()(`${meta.id}/action/toggle-resolved`, {
74
- input: Schema.Struct({
75
- thread: Thread.Thread,
76
- }),
77
- output: Schema.Void,
78
- }) {}
79
-
80
- export class AddMessage extends Schema.TaggedClass<AddMessage>()(`${meta.id}/action/add-message`, {
81
- input: Schema.Struct({
82
- subject: EchoObjectSchema,
83
- anchor: AnchoredTo.AnchoredTo,
84
- sender: Actor.Actor,
85
- text: Schema.String,
86
- }),
87
- output: Schema.Void,
88
- }) {}
89
-
90
- export class DeleteMessage extends Schema.TaggedClass<DeleteMessage>()(`${meta.id}/action/delete-message`, {
91
- input: Schema.Struct({
92
- anchor: AnchoredTo.AnchoredTo,
93
- subject: EchoObjectSchema,
94
- messageId: Schema.String,
95
- message: Schema.optional(Message.Message),
96
- messageIndex: Schema.optional(Schema.Number),
97
- }),
98
- output: Schema.Void,
99
- }) {}
100
- }
101
-
102
- export const ThreadSettingsSchema = Schema.mutable(Schema.Struct({}));
103
- export type ThreadSettingsProps = Schema.Schema.Type<typeof ThreadSettingsSchema>;
7
+ export * as Settings from './Settings';
104
8
 
105
9
  export interface ThreadModel {
106
10
  root: Thread.Thread;
@@ -114,6 +18,7 @@ export type ThreadState = {
114
18
  /** Object toolbar state. */
115
19
  toolbar: Record<string, boolean>;
116
20
  /** In-memory draft threads. */
21
+ // TODO(burdon): Drafts are getting lost.
117
22
  drafts: Record<string, AnchoredTo.AnchoredTo[]>;
118
23
  current?: string | undefined;
119
24
  };
package/src/util.ts CHANGED
@@ -5,9 +5,9 @@
5
5
  import * as Match from 'effect/Match';
6
6
 
7
7
  import { generateName } from '@dxos/display-name';
8
- import { type Selection } from '@dxos/plugin-attention';
9
8
  import { type PublicKey } from '@dxos/react-client';
10
9
  import { type Identity } from '@dxos/react-client/halo';
10
+ import { type Selection } from '@dxos/react-ui-attention';
11
11
  import { type MessageMetadata } from '@dxos/react-ui-thread';
12
12
  import { hexToFallback } from '@dxos/util';
13
13
 
@@ -1,16 +0,0 @@
1
- import {
2
- ChannelContainer,
3
- ChannelContainer_default
4
- } from "./chunk-INQVAYPN.mjs";
5
- import "./chunk-OOUDK7Q7.mjs";
6
- import "./chunk-BBTXGRIR.mjs";
7
- import "./chunk-FR6MEAZI.mjs";
8
- import "./chunk-KOBXMDCI.mjs";
9
- import "./chunk-CP7E2HRE.mjs";
10
- import "./chunk-ISCHODBV.mjs";
11
- import "./chunk-K2DUJRFJ.mjs";
12
- export {
13
- ChannelContainer,
14
- ChannelContainer_default as default
15
- };
16
- //# sourceMappingURL=ChannelContainer-MX5ABVGC.mjs.map
@@ -1,15 +0,0 @@
1
- import {
2
- ChatContainer,
3
- ChatContainer_default,
4
- ChatHeading
5
- } from "./chunk-FR6MEAZI.mjs";
6
- import "./chunk-KOBXMDCI.mjs";
7
- import "./chunk-CP7E2HRE.mjs";
8
- import "./chunk-ISCHODBV.mjs";
9
- import "./chunk-K2DUJRFJ.mjs";
10
- export {
11
- ChatContainer,
12
- ChatHeading,
13
- ChatContainer_default as default
14
- };
15
- //# sourceMappingURL=ChatContainer-7F5Y6GXJ.mjs.map
@@ -1,170 +0,0 @@
1
- import {
2
- Channel_exports,
3
- ThreadAction
4
- } from "./chunk-NMJEVD36.mjs";
5
- import {
6
- ThreadCapabilities
7
- } from "./chunk-BBTXGRIR.mjs";
8
- import {
9
- getAnchor
10
- } from "./chunk-CP7E2HRE.mjs";
11
- import {
12
- meta
13
- } from "./chunk-K2DUJRFJ.mjs";
14
-
15
- // src/capabilities/app-graph-builder.ts
16
- import { Atom } from "@effect-atom/atom-react";
17
- import * as Function from "effect/Function";
18
- import * as Option from "effect/Option";
19
- import { Capabilities, contributes, createIntent } from "@dxos/app-framework";
20
- import { Obj } from "@dxos/echo";
21
- import { AttentionCapabilities } from "@dxos/plugin-attention";
22
- import { ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE, PLANK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
23
- import { ROOT_ID, atomFromSignal, createExtension } from "@dxos/plugin-graph";
24
- var app_graph_builder_default = ((context) => {
25
- const resolve = (typename) => context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
26
- return contributes(Capabilities.AppGraphBuilder, [
27
- createExtension({
28
- id: `${meta.id}/active-call`,
29
- connector: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map((node2) => {
30
- const [call] = get(context.capabilities(ThreadCapabilities.CallManager));
31
- return get(atomFromSignal(() => call?.joined ? [
32
- {
33
- id: `${node2.id}${ATTENDABLE_PATH_SEPARATOR}active-call`,
34
- type: DECK_COMPANION_TYPE,
35
- data: null,
36
- properties: {
37
- label: [
38
- "call panel label",
39
- {
40
- ns: meta.id
41
- }
42
- ],
43
- icon: "ph--video-conference--regular",
44
- position: "hoist",
45
- disposition: "hidden"
46
- }
47
- }
48
- ] : []));
49
- }), Option.getOrElse(() => [])))
50
- }),
51
- // TODO(wittjosiah): The channel shouldn't become the companion during a call.
52
- // Alternative: the call/meeting/thread should be a child node of the channel and that should be opened.
53
- createExtension({
54
- id: `${meta.id}/channel-chat-companion`,
55
- connector: (node) => {
56
- return Atom.make((get) => {
57
- return Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(Channel_exports.Channel, node2.data) ? Option.some(node2.data) : Option.none()), Option.map((channel) => {
58
- const callManager = context.getCapability(ThreadCapabilities.CallManager);
59
- const joined = get(atomFromSignal(() => callManager.joined && callManager.roomId === Obj.getDXN(channel).toString()));
60
- if (!joined) {
61
- return [];
62
- }
63
- return [
64
- {
65
- id: `${Obj.getDXN(channel).toString()}${ATTENDABLE_PATH_SEPARATOR}chat`,
66
- type: PLANK_COMPANION_TYPE,
67
- data: "chat",
68
- properties: {
69
- label: [
70
- "channel companion label",
71
- {
72
- ns: meta.id
73
- }
74
- ],
75
- icon: "ph--hash--regular",
76
- position: "hoist",
77
- disposition: "hidden"
78
- }
79
- }
80
- ];
81
- }), Option.getOrElse(() => []));
82
- });
83
- }
84
- }),
85
- createExtension({
86
- id: `${meta.id}/comments-companion`,
87
- connector: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => {
88
- if (!Obj.isObject(node2.data) || Obj.instanceOf(Channel_exports.Channel, node2.data)) {
89
- return Option.none();
90
- }
91
- const metadata = resolve(Obj.getTypename(node2.data));
92
- return typeof metadata.comments === "string" ? Option.some(node2) : Option.none();
93
- }), Option.map((node2) => [
94
- {
95
- id: [
96
- node2.id,
97
- "comments"
98
- ].join(ATTENDABLE_PATH_SEPARATOR),
99
- type: PLANK_COMPANION_TYPE,
100
- data: "comments",
101
- properties: {
102
- label: [
103
- "comments label",
104
- {
105
- ns: meta.id
106
- }
107
- ],
108
- icon: "ph--chat-text--regular",
109
- disposition: "hidden",
110
- position: "hoist"
111
- }
112
- }
113
- ]), Option.getOrElse(() => [])))
114
- }),
115
- createExtension({
116
- id: `${meta.id}/comment-toolbar`,
117
- actions: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => {
118
- if (!Obj.isObject(node2.data) || Obj.instanceOf(Channel_exports.Channel, node2.data)) {
119
- return Option.none();
120
- }
121
- const metadata = resolve(Obj.getTypename(node2.data));
122
- return typeof metadata.comments === "string" ? Option.some(node2.data) : Option.none();
123
- }), Option.map((object) => {
124
- const selectionManager = context.getCapability(AttentionCapabilities.Selection);
125
- const toolbar = get(context.capabilities(ThreadCapabilities.State))[0]?.state.toolbar ?? {};
126
- const disabled = get(atomFromSignal(() => {
127
- const metadata = resolve(Obj.getTypename(object));
128
- const selection = selectionManager.getSelection(Obj.getDXN(object).toString(), metadata.selectionMode);
129
- const anchor = getAnchor(selection);
130
- const invalidSelection = !anchor;
131
- const overlappingComment = toolbar[Obj.getDXN(object).toString()];
132
- return metadata.comments === "anchored" && invalidSelection || overlappingComment;
133
- }));
134
- return [
135
- {
136
- id: `${Obj.getDXN(object).toString()}/comment`,
137
- data: () => {
138
- const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
139
- const metadata = resolve(Obj.getTypename(object));
140
- const selection = selectionManager.getSelection(Obj.getDXN(object).toString());
141
- const anchor = metadata.comments === "anchored" ? getAnchor(selection) : Date.now().toString();
142
- const name = metadata.getAnchorLabel?.(object, anchor);
143
- void dispatch(createIntent(ThreadAction.Create, {
144
- anchor,
145
- name,
146
- subject: object
147
- }));
148
- },
149
- properties: {
150
- label: [
151
- "add comment label",
152
- {
153
- ns: meta.id
154
- }
155
- ],
156
- icon: "ph--chat-text--regular",
157
- disposition: "toolbar",
158
- disabled,
159
- testId: "thread.comment.add"
160
- }
161
- }
162
- ];
163
- }), Option.getOrElse(() => [])))
164
- })
165
- ]);
166
- });
167
- export {
168
- app_graph_builder_default as default
169
- };
170
- //# sourceMappingURL=app-graph-builder-HNYLII5E.mjs.map