@dxos/plugin-thread 0.8.4-main.ae835ea → 0.8.4-main.bc2380dfbc

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 (571) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/ChannelArticle-ACZD7YFT.mjs +28 -0
  4. package/dist/lib/neutral/ChannelArticle-ACZD7YFT.mjs.map +7 -0
  5. package/dist/lib/neutral/ChannelChat-6YTD5HWL.mjs +10 -0
  6. package/dist/lib/neutral/ThreadCompanion-NQWPS2H6.mjs +208 -0
  7. package/dist/lib/neutral/ThreadCompanion-NQWPS2H6.mjs.map +7 -0
  8. package/dist/lib/neutral/ThreadContainer-XYEPEOSD.mjs +61 -0
  9. package/dist/lib/neutral/ThreadContainer-XYEPEOSD.mjs.map +7 -0
  10. package/dist/lib/neutral/ThreadPlugin.mjs +80 -0
  11. package/dist/lib/neutral/ThreadPlugin.mjs.map +7 -0
  12. package/dist/lib/neutral/ThreadPlugin.node.mjs +40 -0
  13. package/dist/lib/neutral/ThreadPlugin.node.mjs.map +7 -0
  14. package/dist/lib/neutral/ThreadPlugin.workerd.mjs +24 -0
  15. package/dist/lib/neutral/ThreadPlugin.workerd.mjs.map +7 -0
  16. package/dist/lib/neutral/ThreadSettings-5MKTDK3A.mjs +15 -0
  17. package/dist/lib/neutral/ThreadSettings-5MKTDK3A.mjs.map +7 -0
  18. package/dist/lib/neutral/add-message-FBIROBEZ.mjs +87 -0
  19. package/dist/lib/neutral/add-message-FBIROBEZ.mjs.map +7 -0
  20. package/dist/lib/neutral/app-graph-builder-7Q6MA6RT.mjs +120 -0
  21. package/dist/lib/neutral/app-graph-builder-7Q6MA6RT.mjs.map +7 -0
  22. package/dist/lib/neutral/append-channel-message-FTFAD3PK.mjs +40 -0
  23. package/dist/lib/neutral/append-channel-message-FTFAD3PK.mjs.map +7 -0
  24. package/dist/lib/neutral/blueprint-definition-S3EBOH4R.mjs +15 -0
  25. package/dist/lib/neutral/blueprint-definition-S3EBOH4R.mjs.map +7 -0
  26. package/dist/lib/neutral/blueprints/index.mjs +8 -0
  27. package/dist/lib/neutral/capabilities/index.mjs +25 -0
  28. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  29. package/dist/lib/neutral/chunk-5T5LPLBN.mjs +36 -0
  30. package/dist/lib/neutral/chunk-5T5LPLBN.mjs.map +7 -0
  31. package/dist/lib/{browser/chunk-K2DUJRFJ.mjs → neutral/chunk-7GHUS3IX.mjs} +4 -11
  32. package/dist/lib/neutral/chunk-7GHUS3IX.mjs.map +7 -0
  33. package/dist/lib/neutral/chunk-D5LGFCUY.mjs +55 -0
  34. package/dist/lib/neutral/chunk-D5LGFCUY.mjs.map +7 -0
  35. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  36. package/dist/lib/{browser/chunk-CP7E2HRE.mjs → neutral/chunk-JLY4NVTA.mjs} +12 -5
  37. package/dist/lib/neutral/chunk-JLY4NVTA.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-KRXHIW4P.mjs +164 -0
  39. package/dist/lib/neutral/chunk-KRXHIW4P.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-PE7IH7EL.mjs +271 -0
  41. package/dist/lib/neutral/chunk-PE7IH7EL.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-QFDT33VT.mjs +69 -0
  43. package/dist/lib/neutral/chunk-QFDT33VT.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-QMLVLKE3.mjs +8 -0
  45. package/dist/lib/neutral/chunk-QMLVLKE3.mjs.map +7 -0
  46. package/dist/lib/neutral/components/index.mjs +539 -0
  47. package/dist/lib/neutral/components/index.mjs.map +7 -0
  48. package/dist/lib/neutral/containers/index.mjs +15 -0
  49. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  50. package/dist/lib/neutral/create-OAQJ6LXN.mjs +52 -0
  51. package/dist/lib/neutral/create-OAQJ6LXN.mjs.map +7 -0
  52. package/dist/lib/neutral/create-channel-3E4FJ662.mjs +19 -0
  53. package/dist/lib/neutral/create-channel-3E4FJ662.mjs.map +7 -0
  54. package/dist/lib/neutral/create-object-HIEWSBZB.mjs +27 -0
  55. package/dist/lib/neutral/create-object-HIEWSBZB.mjs.map +7 -0
  56. package/dist/lib/neutral/create-proposals-GRYZXRMV.mjs +56 -0
  57. package/dist/lib/neutral/create-proposals-GRYZXRMV.mjs.map +7 -0
  58. package/dist/lib/neutral/delete-HCCG5RVR.mjs +57 -0
  59. package/dist/lib/neutral/delete-HCCG5RVR.mjs.map +7 -0
  60. package/dist/lib/neutral/delete-message-DHFRACB4.mjs +54 -0
  61. package/dist/lib/neutral/delete-message-DHFRACB4.mjs.map +7 -0
  62. package/dist/lib/neutral/hooks/index.mjs +10 -0
  63. package/dist/lib/neutral/index.mjs +28 -0
  64. package/dist/lib/neutral/markdown-BUORNCPG.mjs +83 -0
  65. package/dist/lib/neutral/markdown-BUORNCPG.mjs.map +7 -0
  66. package/dist/lib/neutral/meta.json +1 -0
  67. package/dist/lib/neutral/meta.mjs +10 -0
  68. package/dist/lib/neutral/on-create-space-OEBRKOAM.mjs +23 -0
  69. package/dist/lib/neutral/on-create-space-OEBRKOAM.mjs.map +7 -0
  70. package/dist/lib/neutral/operation-handler-RU6K2S4L.mjs +13 -0
  71. package/dist/lib/neutral/operation-handler-RU6K2S4L.mjs.map +7 -0
  72. package/dist/lib/neutral/operations/index.mjs +8 -0
  73. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  74. package/dist/lib/neutral/plugin.mjs +16 -0
  75. package/dist/lib/neutral/plugin.mjs.map +7 -0
  76. package/dist/lib/neutral/react-surface-XY23GVZH.mjs +76 -0
  77. package/dist/lib/neutral/react-surface-XY23GVZH.mjs.map +7 -0
  78. package/dist/lib/neutral/restore-P4ZLXLF7.mjs +32 -0
  79. package/dist/lib/neutral/restore-P4ZLXLF7.mjs.map +7 -0
  80. package/dist/lib/neutral/restore-message-AUBOP2DF.mjs +33 -0
  81. package/dist/lib/neutral/restore-message-AUBOP2DF.mjs.map +7 -0
  82. package/dist/lib/neutral/select-LIVAMBCE.mjs +24 -0
  83. package/dist/lib/neutral/select-LIVAMBCE.mjs.map +7 -0
  84. package/dist/lib/neutral/settings-HK4EB6TF.mjs +30 -0
  85. package/dist/lib/neutral/settings-HK4EB6TF.mjs.map +7 -0
  86. package/dist/lib/neutral/state-UU7VEAKV.mjs +22 -0
  87. package/dist/lib/neutral/state-UU7VEAKV.mjs.map +7 -0
  88. package/dist/lib/neutral/testing/index.mjs +58 -0
  89. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  90. package/dist/lib/neutral/toggle-resolved-RQBDQZSV.mjs +36 -0
  91. package/dist/lib/neutral/toggle-resolved-RQBDQZSV.mjs.map +7 -0
  92. package/dist/lib/neutral/translations.mjs +90 -0
  93. package/dist/lib/neutral/translations.mjs.map +7 -0
  94. package/dist/lib/neutral/types/index.mjs +12 -0
  95. package/dist/lib/neutral/types/index.mjs.map +7 -0
  96. package/dist/lib/neutral/undo-mappings-HOKL2L3M.mjs +54 -0
  97. package/dist/lib/neutral/undo-mappings-HOKL2L3M.mjs.map +7 -0
  98. package/dist/types/src/ThreadPlugin.d.ts +3 -1
  99. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  100. package/dist/types/src/ThreadPlugin.node.d.ts +4 -0
  101. package/dist/types/src/ThreadPlugin.node.d.ts.map +1 -0
  102. package/dist/types/src/ThreadPlugin.test.d.ts +2 -0
  103. package/dist/types/src/ThreadPlugin.test.d.ts.map +1 -0
  104. package/dist/types/src/ThreadPlugin.workerd.d.ts +4 -0
  105. package/dist/types/src/ThreadPlugin.workerd.d.ts.map +1 -0
  106. package/dist/types/src/blueprints/index.d.ts +2 -0
  107. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  108. package/dist/types/src/blueprints/thread-blueprint.d.ts +4 -0
  109. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
  110. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  111. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/blueprint-definition.d.ts +6 -0
  113. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  114. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  115. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  116. package/dist/types/src/capabilities/index.d.ts +15 -15
  117. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  118. package/dist/types/src/capabilities/markdown.d.ts +3 -2
  119. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  120. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  121. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  122. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  123. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  124. package/dist/types/src/capabilities/settings.d.ts +5 -2
  125. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  126. package/dist/types/src/capabilities/state.d.ts +5 -5
  127. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  128. package/dist/types/src/capabilities/undo-mappings.d.ts +5 -0
  129. package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -0
  130. package/dist/types/src/components/Chat/Chat.d.ts +51 -0
  131. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -0
  132. package/dist/types/src/components/Chat/index.d.ts +2 -0
  133. package/dist/types/src/components/Chat/index.d.ts.map +1 -0
  134. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts +13 -0
  135. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts.map +1 -0
  136. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts +160 -0
  137. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts.map +1 -0
  138. package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts +14 -0
  139. package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts.map +1 -0
  140. package/dist/types/src/components/CommentsPanel/index.d.ts +3 -0
  141. package/dist/types/src/components/CommentsPanel/index.d.ts.map +1 -0
  142. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts +15 -0
  143. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts.map +1 -0
  144. package/dist/types/src/components/MessagePanel/index.d.ts +2 -0
  145. package/dist/types/src/components/MessagePanel/index.d.ts.map +1 -0
  146. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts +6 -0
  147. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts.map +1 -0
  148. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts +161 -0
  149. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts.map +1 -0
  150. package/dist/types/src/components/ThreadSettings/index.d.ts +2 -0
  151. package/dist/types/src/components/ThreadSettings/index.d.ts.map +1 -0
  152. package/dist/types/src/components/index.d.ts +5 -10
  153. package/dist/types/src/components/index.d.ts.map +1 -1
  154. package/dist/types/src/containers/ChannelArticle/ChannelArticle.d.ts +13 -0
  155. package/dist/types/src/containers/ChannelArticle/ChannelArticle.d.ts.map +1 -0
  156. package/dist/types/src/containers/ChannelArticle/ChannelArticle.stories.d.ts +162 -0
  157. package/dist/types/src/containers/ChannelArticle/ChannelArticle.stories.d.ts.map +1 -0
  158. package/dist/types/src/containers/ChannelArticle/index.d.ts +2 -0
  159. package/dist/types/src/containers/ChannelArticle/index.d.ts.map +1 -0
  160. package/dist/types/src/containers/ChannelChat/ChannelChat.d.ts +20 -0
  161. package/dist/types/src/containers/ChannelChat/ChannelChat.d.ts.map +1 -0
  162. package/dist/types/src/containers/ChannelChat/index.d.ts +4 -0
  163. package/dist/types/src/containers/ChannelChat/index.d.ts.map +1 -0
  164. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts +8 -0
  165. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts.map +1 -0
  166. package/dist/types/src/containers/ThreadCompanion/index.d.ts +2 -0
  167. package/dist/types/src/containers/ThreadCompanion/index.d.ts.map +1 -0
  168. package/dist/types/src/containers/ThreadContainer/ThreadContainer.d.ts +20 -0
  169. package/dist/types/src/containers/ThreadContainer/ThreadContainer.d.ts.map +1 -0
  170. package/dist/types/src/containers/ThreadContainer/ThreadContainer.stories.d.ts +162 -0
  171. package/dist/types/src/containers/ThreadContainer/ThreadContainer.stories.d.ts.map +1 -0
  172. package/dist/types/src/containers/ThreadContainer/index.d.ts +4 -0
  173. package/dist/types/src/containers/ThreadContainer/index.d.ts.map +1 -0
  174. package/dist/types/src/containers/index.d.ts +6 -0
  175. package/dist/types/src/containers/index.d.ts.map +1 -0
  176. package/dist/types/src/{components/command-extension.d.ts → extensions/command.d.ts} +1 -1
  177. package/dist/types/src/extensions/command.d.ts.map +1 -0
  178. package/dist/types/src/extensions/index.d.ts +1 -0
  179. package/dist/types/src/extensions/index.d.ts.map +1 -1
  180. package/dist/types/src/extensions/threads.d.ts +9 -4
  181. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  182. package/dist/types/src/hooks/analytics.d.ts +2 -3
  183. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  184. package/dist/types/src/hooks/index.d.ts +0 -4
  185. package/dist/types/src/hooks/index.d.ts.map +1 -1
  186. package/dist/types/src/hooks/useStatus.d.ts.map +1 -1
  187. package/dist/types/src/index.d.ts +2 -3
  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/append-channel-message.d.ts +5 -0
  194. package/dist/types/src/operations/append-channel-message.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/delete-message.d.ts +5 -0
  202. package/dist/types/src/operations/delete-message.d.ts.map +1 -0
  203. package/dist/types/src/operations/delete.d.ts +5 -0
  204. package/dist/types/src/operations/delete.d.ts.map +1 -0
  205. package/dist/types/src/operations/index.d.ts +3 -0
  206. package/dist/types/src/operations/index.d.ts.map +1 -0
  207. package/dist/types/src/operations/on-create-space.d.ts +5 -0
  208. package/dist/types/src/operations/on-create-space.d.ts.map +1 -0
  209. package/dist/types/src/operations/restore-message.d.ts +5 -0
  210. package/dist/types/src/operations/restore-message.d.ts.map +1 -0
  211. package/dist/types/src/operations/restore.d.ts +5 -0
  212. package/dist/types/src/operations/restore.d.ts.map +1 -0
  213. package/dist/types/src/operations/select.d.ts +5 -0
  214. package/dist/types/src/operations/select.d.ts.map +1 -0
  215. package/dist/types/src/operations/toggle-resolved.d.ts +5 -0
  216. package/dist/types/src/operations/toggle-resolved.d.ts.map +1 -0
  217. package/dist/types/src/plugin.d.ts +4 -0
  218. package/dist/types/src/plugin.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/index.d.ts +1 -1
  222. package/dist/types/src/testing/index.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/Settings.d.ts +5 -0
  226. package/dist/types/src/types/Settings.d.ts.map +1 -0
  227. package/dist/types/src/types/ThreadCapabilities.d.ts +13 -0
  228. package/dist/types/src/types/ThreadCapabilities.d.ts.map +1 -0
  229. package/dist/types/src/types/ThreadOperation.d.ts +1995 -0
  230. package/dist/types/src/types/ThreadOperation.d.ts.map +1 -0
  231. package/dist/types/src/types/index.d.ts +3 -2
  232. package/dist/types/src/types/index.d.ts.map +1 -1
  233. package/dist/types/src/types/types.d.ts +2 -442
  234. package/dist/types/src/types/types.d.ts.map +1 -1
  235. package/dist/types/src/util.d.ts +6 -3
  236. package/dist/types/src/util.d.ts.map +1 -1
  237. package/dist/types/tsconfig.tsbuildinfo +1 -1
  238. package/package.json +151 -86
  239. package/src/ThreadPlugin.node.ts +39 -0
  240. package/src/ThreadPlugin.test.ts +37 -0
  241. package/src/ThreadPlugin.tsx +43 -130
  242. package/src/ThreadPlugin.workerd.ts +20 -0
  243. package/src/blueprints/index.ts +5 -0
  244. package/src/blueprints/thread-blueprint.ts +36 -0
  245. package/src/capabilities/app-graph-builder.ts +124 -167
  246. package/src/capabilities/blueprint-definition.ts +19 -0
  247. package/src/capabilities/create-object.ts +29 -0
  248. package/src/capabilities/index.ts +15 -12
  249. package/src/capabilities/markdown.ts +53 -36
  250. package/src/capabilities/operation-handler.ts +16 -0
  251. package/src/capabilities/react-surface.tsx +64 -78
  252. package/src/capabilities/settings.ts +26 -12
  253. package/src/capabilities/state.ts +14 -18
  254. package/src/capabilities/undo-mappings.ts +46 -0
  255. package/src/components/Chat/Chat.tsx +258 -0
  256. package/src/components/Chat/index.ts +5 -0
  257. package/src/components/CommentsPanel/CommentsPanel.stories.tsx +95 -0
  258. package/src/components/{CommentsContainer.tsx → CommentsPanel/CommentsPanel.tsx} +19 -20
  259. package/src/components/{CommentsThreadContainer.tsx → CommentsPanel/CommentsThread.tsx} +44 -47
  260. package/src/components/CommentsPanel/index.ts +6 -0
  261. package/src/components/{MessageContainer.tsx → MessagePanel/MessagePanel.tsx} +83 -47
  262. package/src/components/MessagePanel/index.ts +5 -0
  263. package/src/components/ThreadSettings/ThreadSettings.stories.tsx +32 -0
  264. package/src/components/ThreadSettings/ThreadSettings.tsx +19 -0
  265. package/src/components/ThreadSettings/index.ts +5 -0
  266. package/src/components/index.ts +5 -12
  267. package/src/containers/ChannelArticle/ChannelArticle.stories.tsx +105 -0
  268. package/src/containers/ChannelArticle/ChannelArticle.tsx +42 -0
  269. package/src/containers/ChannelArticle/index.ts +5 -0
  270. package/src/containers/ChannelChat/ChannelChat.tsx +75 -0
  271. package/src/containers/ChannelChat/index.ts +8 -0
  272. package/src/containers/ThreadCompanion/ThreadCompanion.tsx +215 -0
  273. package/src/containers/ThreadCompanion/index.ts +5 -0
  274. package/src/{components/Chat.stories.tsx → containers/ThreadContainer/ThreadContainer.stories.tsx} +27 -26
  275. package/src/containers/ThreadContainer/ThreadContainer.tsx +75 -0
  276. package/src/containers/ThreadContainer/index.ts +8 -0
  277. package/src/containers/index.ts +10 -0
  278. package/src/{components/command-extension.ts → extensions/command.ts} +3 -3
  279. package/src/extensions/index.ts +1 -0
  280. package/src/extensions/threads.ts +84 -39
  281. package/src/hooks/analytics.ts +22 -21
  282. package/src/hooks/index.ts +0 -4
  283. package/src/index.ts +4 -4
  284. package/src/meta.ts +5 -6
  285. package/src/operations/add-message.ts +81 -0
  286. package/src/operations/append-channel-message.ts +37 -0
  287. package/src/operations/create-channel.ts +20 -0
  288. package/src/operations/create-proposals.ts +49 -0
  289. package/src/operations/create.ts +48 -0
  290. package/src/operations/delete-message.ts +53 -0
  291. package/src/operations/delete.ts +63 -0
  292. package/src/operations/index.ts +20 -0
  293. package/src/operations/on-create-space.ts +27 -0
  294. package/src/operations/restore-message.ts +38 -0
  295. package/src/operations/restore.ts +38 -0
  296. package/src/operations/select.ts +24 -0
  297. package/src/operations/toggle-resolved.ts +41 -0
  298. package/src/plugin.ts +11 -0
  299. package/src/{components/testing.ts → testing/data.ts} +10 -12
  300. package/src/testing/index.ts +1 -1
  301. package/src/translations.ts +74 -76
  302. package/src/types/Settings.ts +10 -0
  303. package/src/types/ThreadCapabilities.ts +26 -0
  304. package/src/types/ThreadOperation.ts +178 -0
  305. package/src/types/index.ts +4 -2
  306. package/src/types/types.ts +3 -109
  307. package/src/util.ts +37 -5
  308. package/dist/lib/browser/ChannelContainer-SVV4ZX5T.mjs +0 -16
  309. package/dist/lib/browser/ChatContainer-ALFWQ65B.mjs +0 -15
  310. package/dist/lib/browser/app-graph-builder-ACBXRBOS.mjs +0 -171
  311. package/dist/lib/browser/app-graph-builder-ACBXRBOS.mjs.map +0 -7
  312. package/dist/lib/browser/call-manager-P3MYR2JS.mjs +0 -24
  313. package/dist/lib/browser/call-manager-P3MYR2JS.mjs.map +0 -7
  314. package/dist/lib/browser/chunk-6CUDBEYP.mjs +0 -377
  315. package/dist/lib/browser/chunk-6CUDBEYP.mjs.map +0 -7
  316. package/dist/lib/browser/chunk-BBTXGRIR.mjs +0 -18
  317. package/dist/lib/browser/chunk-BBTXGRIR.mjs.map +0 -7
  318. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +0 -7
  319. package/dist/lib/browser/chunk-DJOUMWEL.mjs +0 -988
  320. package/dist/lib/browser/chunk-DJOUMWEL.mjs.map +0 -7
  321. package/dist/lib/browser/chunk-HDEQRBOC.mjs +0 -181
  322. package/dist/lib/browser/chunk-HDEQRBOC.mjs.map +0 -7
  323. package/dist/lib/browser/chunk-IQSXEHOW.mjs +0 -618
  324. package/dist/lib/browser/chunk-IQSXEHOW.mjs.map +0 -7
  325. package/dist/lib/browser/chunk-K2DUJRFJ.mjs.map +0 -7
  326. package/dist/lib/browser/chunk-L6F2AG6W.mjs +0 -23
  327. package/dist/lib/browser/chunk-L6F2AG6W.mjs.map +0 -7
  328. package/dist/lib/browser/chunk-US5ZQYC3.mjs +0 -1793
  329. package/dist/lib/browser/chunk-US5ZQYC3.mjs.map +0 -7
  330. package/dist/lib/browser/chunk-UTSLSZED.mjs +0 -178
  331. package/dist/lib/browser/chunk-UTSLSZED.mjs.map +0 -7
  332. package/dist/lib/browser/chunk-XYUJXHYV.mjs +0 -106
  333. package/dist/lib/browser/chunk-XYUJXHYV.mjs.map +0 -7
  334. package/dist/lib/browser/index.mjs +0 -313
  335. package/dist/lib/browser/index.mjs.map +0 -7
  336. package/dist/lib/browser/intent-resolver-5POQTZ24.mjs +0 -419
  337. package/dist/lib/browser/intent-resolver-5POQTZ24.mjs.map +0 -7
  338. package/dist/lib/browser/markdown-L7LDNF56.mjs +0 -169
  339. package/dist/lib/browser/markdown-L7LDNF56.mjs.map +0 -7
  340. package/dist/lib/browser/meta.json +0 -1
  341. package/dist/lib/browser/react-root-RCJLK4EP.mjs +0 -28
  342. package/dist/lib/browser/react-root-RCJLK4EP.mjs.map +0 -7
  343. package/dist/lib/browser/react-surface-IC576W2W.mjs +0 -109
  344. package/dist/lib/browser/react-surface-IC576W2W.mjs.map +0 -7
  345. package/dist/lib/browser/settings-5FYGBOGI.mjs +0 -22
  346. package/dist/lib/browser/settings-5FYGBOGI.mjs.map +0 -7
  347. package/dist/lib/browser/state-36REWXO5.mjs +0 -34
  348. package/dist/lib/browser/state-36REWXO5.mjs.map +0 -7
  349. package/dist/lib/browser/toolkit-PXASLYEQ.mjs +0 -74
  350. package/dist/lib/browser/toolkit-PXASLYEQ.mjs.map +0 -7
  351. package/dist/lib/browser/types/index.mjs +0 -14
  352. package/dist/lib/node-esm/ChannelContainer-63GMQ753.mjs +0 -17
  353. package/dist/lib/node-esm/ChatContainer-MFKPXMIK.mjs +0 -16
  354. package/dist/lib/node-esm/app-graph-builder-JXD7KY3G.mjs +0 -172
  355. package/dist/lib/node-esm/app-graph-builder-JXD7KY3G.mjs.map +0 -7
  356. package/dist/lib/node-esm/call-manager-FCEFP7EJ.mjs +0 -25
  357. package/dist/lib/node-esm/call-manager-FCEFP7EJ.mjs.map +0 -7
  358. package/dist/lib/node-esm/chunk-2MMJF7DW.mjs +0 -182
  359. package/dist/lib/node-esm/chunk-2MMJF7DW.mjs.map +0 -7
  360. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs +0 -108
  361. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs.map +0 -7
  362. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs +0 -33
  363. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +0 -7
  364. package/dist/lib/node-esm/chunk-AFDO2SUZ.mjs +0 -25
  365. package/dist/lib/node-esm/chunk-AFDO2SUZ.mjs.map +0 -7
  366. package/dist/lib/node-esm/chunk-KGYDYYKJ.mjs +0 -1794
  367. package/dist/lib/node-esm/chunk-KGYDYYKJ.mjs.map +0 -7
  368. package/dist/lib/node-esm/chunk-NWUUMKVQ.mjs +0 -378
  369. package/dist/lib/node-esm/chunk-NWUUMKVQ.mjs.map +0 -7
  370. package/dist/lib/node-esm/chunk-Q7AKKZNY.mjs +0 -619
  371. package/dist/lib/node-esm/chunk-Q7AKKZNY.mjs.map +0 -7
  372. package/dist/lib/node-esm/chunk-QCQAAU6J.mjs +0 -989
  373. package/dist/lib/node-esm/chunk-QCQAAU6J.mjs.map +0 -7
  374. package/dist/lib/node-esm/chunk-TYLLHI46.mjs +0 -179
  375. package/dist/lib/node-esm/chunk-TYLLHI46.mjs.map +0 -7
  376. package/dist/lib/node-esm/chunk-XI45H4IV.mjs +0 -28
  377. package/dist/lib/node-esm/chunk-XI45H4IV.mjs.map +0 -7
  378. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs +0 -19
  379. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs.map +0 -7
  380. package/dist/lib/node-esm/index.mjs +0 -314
  381. package/dist/lib/node-esm/index.mjs.map +0 -7
  382. package/dist/lib/node-esm/intent-resolver-63NV3XD2.mjs +0 -420
  383. package/dist/lib/node-esm/intent-resolver-63NV3XD2.mjs.map +0 -7
  384. package/dist/lib/node-esm/markdown-ZQW7MI5U.mjs +0 -170
  385. package/dist/lib/node-esm/markdown-ZQW7MI5U.mjs.map +0 -7
  386. package/dist/lib/node-esm/meta.json +0 -1
  387. package/dist/lib/node-esm/react-root-4IDB2SN2.mjs +0 -29
  388. package/dist/lib/node-esm/react-root-4IDB2SN2.mjs.map +0 -7
  389. package/dist/lib/node-esm/react-surface-O4LGTAZ3.mjs +0 -110
  390. package/dist/lib/node-esm/react-surface-O4LGTAZ3.mjs.map +0 -7
  391. package/dist/lib/node-esm/settings-EOBQUZSW.mjs +0 -23
  392. package/dist/lib/node-esm/settings-EOBQUZSW.mjs.map +0 -7
  393. package/dist/lib/node-esm/state-X3W67GTL.mjs +0 -35
  394. package/dist/lib/node-esm/state-X3W67GTL.mjs.map +0 -7
  395. package/dist/lib/node-esm/toolkit-X2KA4FNC.mjs +0 -75
  396. package/dist/lib/node-esm/toolkit-X2KA4FNC.mjs.map +0 -7
  397. package/dist/lib/node-esm/types/index.mjs +0 -15
  398. package/dist/types/src/calls/call-manager.d.ts +0 -77
  399. package/dist/types/src/calls/call-manager.d.ts.map +0 -1
  400. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +0 -66
  401. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +0 -1
  402. package/dist/types/src/calls/index.d.ts +0 -7
  403. package/dist/types/src/calls/index.d.ts.map +0 -1
  404. package/dist/types/src/calls/media-manager.d.ts +0 -60
  405. package/dist/types/src/calls/media-manager.d.ts.map +0 -1
  406. package/dist/types/src/calls/speaking-monitor.d.ts +0 -24
  407. package/dist/types/src/calls/speaking-monitor.d.ts.map +0 -1
  408. package/dist/types/src/calls/types.d.ts +0 -45
  409. package/dist/types/src/calls/types.d.ts.map +0 -1
  410. package/dist/types/src/calls/util/audio.d.ts +0 -6
  411. package/dist/types/src/calls/util/audio.d.ts.map +0 -1
  412. package/dist/types/src/calls/util/calls-service.d.ts +0 -77
  413. package/dist/types/src/calls/util/calls-service.d.ts.map +0 -1
  414. package/dist/types/src/calls/util/history-cache.d.ts +0 -11
  415. package/dist/types/src/calls/util/history-cache.d.ts.map +0 -1
  416. package/dist/types/src/calls/util/index.d.ts +0 -5
  417. package/dist/types/src/calls/util/index.d.ts.map +0 -1
  418. package/dist/types/src/calls/util/media.d.ts +0 -6
  419. package/dist/types/src/calls/util/media.d.ts.map +0 -1
  420. package/dist/types/src/calls/util/stub-media-streams.d.ts +0 -18
  421. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +0 -1
  422. package/dist/types/src/calls/util/task-scheduling.d.ts +0 -17
  423. package/dist/types/src/calls/util/task-scheduling.d.ts.map +0 -1
  424. package/dist/types/src/calls-service.stories.d.ts +0 -23
  425. package/dist/types/src/calls-service.stories.d.ts.map +0 -1
  426. package/dist/types/src/capabilities/call-manager.d.ts +0 -5
  427. package/dist/types/src/capabilities/call-manager.d.ts.map +0 -1
  428. package/dist/types/src/capabilities/capabilities.d.ts +0 -27
  429. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  430. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  431. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  432. package/dist/types/src/capabilities/react-root.d.ts +0 -7
  433. package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
  434. package/dist/types/src/capabilities/toolkit.d.ts +0 -24
  435. package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
  436. package/dist/types/src/components/Call/Call.d.ts +0 -17
  437. package/dist/types/src/components/Call/Call.d.ts.map +0 -1
  438. package/dist/types/src/components/Call/Toolbar.d.ts +0 -16
  439. package/dist/types/src/components/Call/Toolbar.d.ts.map +0 -1
  440. package/dist/types/src/components/Call/index.d.ts +0 -3
  441. package/dist/types/src/components/Call/index.d.ts.map +0 -1
  442. package/dist/types/src/components/CallDebugPanel.d.ts +0 -15
  443. package/dist/types/src/components/CallDebugPanel.d.ts.map +0 -1
  444. package/dist/types/src/components/CallSidebar.d.ts +0 -4
  445. package/dist/types/src/components/CallSidebar.d.ts.map +0 -1
  446. package/dist/types/src/components/ChannelContainer.d.ts +0 -14
  447. package/dist/types/src/components/ChannelContainer.d.ts.map +0 -1
  448. package/dist/types/src/components/ChannelContainer.stories.d.ts +0 -160
  449. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +0 -1
  450. package/dist/types/src/components/Chat.stories.d.ts +0 -160
  451. package/dist/types/src/components/Chat.stories.d.ts.map +0 -1
  452. package/dist/types/src/components/ChatContainer.d.ts +0 -18
  453. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  454. package/dist/types/src/components/Comments.stories.d.ts +0 -158
  455. package/dist/types/src/components/Comments.stories.d.ts.map +0 -1
  456. package/dist/types/src/components/CommentsContainer.d.ts +0 -13
  457. package/dist/types/src/components/CommentsContainer.d.ts.map +0 -1
  458. package/dist/types/src/components/CommentsThreadContainer.d.ts +0 -14
  459. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +0 -1
  460. package/dist/types/src/components/Lobby/Lobby.d.ts +0 -15
  461. package/dist/types/src/components/Lobby/Lobby.d.ts.map +0 -1
  462. package/dist/types/src/components/Lobby/index.d.ts +0 -2
  463. package/dist/types/src/components/Lobby/index.d.ts.map +0 -1
  464. package/dist/types/src/components/Media/AudioStream.d.ts +0 -6
  465. package/dist/types/src/components/Media/AudioStream.d.ts.map +0 -1
  466. package/dist/types/src/components/Media/VideoObject.d.ts +0 -15
  467. package/dist/types/src/components/Media/VideoObject.d.ts.map +0 -1
  468. package/dist/types/src/components/Media/VideoObject.stories.d.ts +0 -22
  469. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +0 -1
  470. package/dist/types/src/components/Media/index.d.ts +0 -3
  471. package/dist/types/src/components/Media/index.d.ts.map +0 -1
  472. package/dist/types/src/components/MessageContainer.d.ts +0 -14
  473. package/dist/types/src/components/MessageContainer.d.ts.map +0 -1
  474. package/dist/types/src/components/Participant/Participant.d.ts +0 -6
  475. package/dist/types/src/components/Participant/Participant.d.ts.map +0 -1
  476. package/dist/types/src/components/Participant/ParticipantGrid.d.ts +0 -11
  477. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +0 -1
  478. package/dist/types/src/components/Participant/index.d.ts +0 -3
  479. package/dist/types/src/components/Participant/index.d.ts.map +0 -1
  480. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts +0 -12
  481. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts.map +0 -1
  482. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +0 -162
  483. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +0 -1
  484. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts +0 -32
  485. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts.map +0 -1
  486. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +0 -176
  487. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +0 -1
  488. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts +0 -21
  489. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +0 -1
  490. package/dist/types/src/components/ResponsiveGrid/index.d.ts +0 -4
  491. package/dist/types/src/components/ResponsiveGrid/index.d.ts.map +0 -1
  492. package/dist/types/src/components/ThreadComplementary.d.ts +0 -5
  493. package/dist/types/src/components/ThreadComplementary.d.ts.map +0 -1
  494. package/dist/types/src/components/ThreadSettings.d.ts +0 -6
  495. package/dist/types/src/components/ThreadSettings.d.ts.map +0 -1
  496. package/dist/types/src/components/command-extension.d.ts.map +0 -1
  497. package/dist/types/src/components/testing.d.ts.map +0 -1
  498. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +0 -2
  499. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +0 -1
  500. package/dist/types/src/hooks/useDebugMode.d.ts +0 -2
  501. package/dist/types/src/hooks/useDebugMode.d.ts.map +0 -1
  502. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts +0 -2
  503. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts.map +0 -1
  504. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +0 -3
  505. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +0 -1
  506. package/dist/types/src/testing/stories.d.ts +0 -2
  507. package/dist/types/src/testing/stories.d.ts.map +0 -1
  508. package/dist/types/src/types/Channel.d.ts +0 -16
  509. package/dist/types/src/types/Channel.d.ts.map +0 -1
  510. package/dist/types/src/types/Thread.d.ts +0 -167
  511. package/dist/types/src/types/Thread.d.ts.map +0 -1
  512. package/src/calls/call-manager.ts +0 -246
  513. package/src/calls/call-swarm-synchronizer.ts +0 -350
  514. package/src/calls/index.ts +0 -10
  515. package/src/calls/media-manager.ts +0 -375
  516. package/src/calls/speaking-monitor.ts +0 -85
  517. package/src/calls/types.ts +0 -74
  518. package/src/calls/util/audio.ts +0 -58
  519. package/src/calls/util/calls-service.ts +0 -581
  520. package/src/calls/util/history-cache.ts +0 -27
  521. package/src/calls/util/index.ts +0 -8
  522. package/src/calls/util/media.ts +0 -52
  523. package/src/calls/util/stub-media-streams.ts +0 -127
  524. package/src/calls/util/task-scheduling.ts +0 -92
  525. package/src/calls-service.stories.tsx +0 -229
  526. package/src/capabilities/call-manager.ts +0 -20
  527. package/src/capabilities/capabilities.ts +0 -33
  528. package/src/capabilities/intent-resolver.ts +0 -344
  529. package/src/capabilities/react-root.tsx +0 -17
  530. package/src/capabilities/toolkit.ts +0 -85
  531. package/src/components/Call/Call.tsx +0 -89
  532. package/src/components/Call/Toolbar.tsx +0 -182
  533. package/src/components/Call/index.ts +0 -6
  534. package/src/components/CallDebugPanel.tsx +0 -174
  535. package/src/components/CallSidebar.tsx +0 -18
  536. package/src/components/ChannelContainer.stories.tsx +0 -59
  537. package/src/components/ChannelContainer.tsx +0 -204
  538. package/src/components/ChatContainer.tsx +0 -154
  539. package/src/components/Comments.stories.tsx +0 -91
  540. package/src/components/Lobby/Lobby.tsx +0 -119
  541. package/src/components/Lobby/index.ts +0 -5
  542. package/src/components/Media/AudioStream.tsx +0 -67
  543. package/src/components/Media/VideoObject.stories.tsx +0 -60
  544. package/src/components/Media/VideoObject.tsx +0 -58
  545. package/src/components/Media/index.ts +0 -6
  546. package/src/components/Participant/Participant.tsx +0 -63
  547. package/src/components/Participant/ParticipantGrid.tsx +0 -89
  548. package/src/components/Participant/index.ts +0 -6
  549. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +0 -54
  550. package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +0 -31
  551. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +0 -158
  552. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +0 -341
  553. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +0 -131
  554. package/src/components/ResponsiveGrid/index.ts +0 -7
  555. package/src/components/ThreadComplementary.tsx +0 -181
  556. package/src/components/ThreadSettings.tsx +0 -16
  557. package/src/hooks/useBlackCanvasStreamTrack.tsx +0 -27
  558. package/src/hooks/useDebugMode.ts +0 -25
  559. package/src/hooks/useInaudibleAudioStreamTrack.tsx +0 -27
  560. package/src/hooks/useVideoStreamTrack.tsx +0 -36
  561. package/src/testing/stories.ts +0 -51
  562. package/src/types/Channel.ts +0 -27
  563. package/src/types/Thread.ts +0 -26
  564. package/src/typings/peermetrics-webrtc-stats.d.ts +0 -46
  565. package/src/typings.d.ts +0 -8
  566. /package/dist/lib/{browser/ChannelContainer-SVV4ZX5T.mjs.map → neutral/ChannelChat-6YTD5HWL.mjs.map} +0 -0
  567. /package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
  568. /package/dist/lib/{browser/ChatContainer-ALFWQ65B.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  569. /package/dist/lib/{node-esm/types → neutral/hooks}/index.mjs.map +0 -0
  570. /package/dist/lib/{node-esm/ChannelContainer-63GMQ753.mjs.map → neutral/index.mjs.map} +0 -0
  571. /package/dist/lib/{node-esm/ChatContainer-MFKPXMIK.mjs.map → neutral/meta.mjs.map} +0 -0
@@ -0,0 +1,105 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import * as Effect from 'effect/Effect';
7
+ import React from 'react';
8
+
9
+ import { Capability } from '@dxos/app-framework';
10
+ import { withPluginManager } from '@dxos/app-framework/testing';
11
+ import { AppCapabilities } from '@dxos/app-toolkit';
12
+ import { Feed, Query } from '@dxos/echo';
13
+ import { createFeedServiceLayer } from '@dxos/echo-db';
14
+ import { ClientPlugin } from '@dxos/plugin-client/testing';
15
+ import { initializeIdentity } from '@dxos/plugin-client/testing';
16
+ import { SpacePlugin } from '@dxos/plugin-space/testing';
17
+ import { corePlugins } from '@dxos/plugin-testing';
18
+ import { Config } from '@dxos/react-client';
19
+ import { useQuery, useSpaces } from '@dxos/react-client/echo';
20
+ import { withLayout, withTheme, Loading } from '@dxos/react-ui/testing';
21
+ import { Channel, Message, Thread } from '@dxos/types';
22
+
23
+ import { translations } from '#translations';
24
+
25
+ import { ThreadPlugin } from '../../ThreadPlugin';
26
+ import { ChannelArticle, type ChannelArticleProps } from './ChannelArticle';
27
+
28
+ // TODO(wittjosiah): Channel doesn't render full height.
29
+ const DefaultStory = ({ roomId }: ChannelArticleProps) => {
30
+ const [space] = useSpaces();
31
+ const [channel] = useQuery(space?.db, Query.type(Channel.Channel));
32
+ if (!channel) {
33
+ return <Loading data={{ channel }} />;
34
+ }
35
+
36
+ return <ChannelArticle subject={channel} attendableId='story' roomId={roomId} role='article' />;
37
+ };
38
+
39
+ const meta = {
40
+ title: 'plugins/plugin-thread/containers/ChannelArticle',
41
+ component: ChannelArticle,
42
+ render: DefaultStory,
43
+ decorators: [
44
+ withTheme(),
45
+ withLayout({ layout: 'column' }),
46
+ withPluginManager({
47
+ capabilities: [
48
+ Capability.contributes(AppCapabilities.Schema, [Channel.Channel, Feed.Feed, Thread.Thread, Message.Message]),
49
+ ],
50
+ plugins: [
51
+ ...corePlugins(),
52
+ ClientPlugin({
53
+ types: [Channel.Channel, Feed.Feed, Thread.Thread, Message.Message],
54
+ config: new Config({
55
+ runtime: {
56
+ services: {
57
+ edge: {
58
+ url: 'https://edge.dxos.workers.dev/',
59
+ },
60
+ iceProviders: [
61
+ {
62
+ urls: 'https://edge.dxos.workers.dev/ice',
63
+ },
64
+ ],
65
+ },
66
+ },
67
+ }),
68
+ onClientInitialized: ({ client }) =>
69
+ Effect.gen(function* () {
70
+ const { personalSpace } = yield* initializeIdentity(client);
71
+ const channel = personalSpace.db.add(Channel.make({ name: 'general' }));
72
+ const feed = yield* Effect.promise(() => channel.feed.load());
73
+ const seed = [
74
+ Message.make({ sender: { role: 'user' }, blocks: [{ _tag: 'text', text: 'Hello, channel.' }] }),
75
+ Message.make({
76
+ sender: { role: 'user' },
77
+ blocks: [{ _tag: 'text', text: 'Messages are stored in the feed.' }],
78
+ }),
79
+ ];
80
+ yield* Feed.append(feed, seed).pipe(Effect.provide(createFeedServiceLayer(personalSpace.queues)));
81
+ }),
82
+ }),
83
+ SpacePlugin({}),
84
+ ThreadPlugin(),
85
+ ],
86
+ }),
87
+ ],
88
+ parameters: {
89
+ translations,
90
+ },
91
+ } satisfies Meta<typeof ChannelArticle>;
92
+
93
+ export default meta;
94
+
95
+ type Story = StoryObj<typeof meta>;
96
+
97
+ export const Default: Story = {
98
+ args: {
99
+ // Fixed room for testing.
100
+ subject: undefined,
101
+ attendableId: 'story',
102
+ role: 'article',
103
+ roomId: '04a1d1911703b8e929d0649021a965',
104
+ },
105
+ };
@@ -0,0 +1,42 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { type AppSurface } from '@dxos/app-toolkit/ui';
8
+ import { getSpace } from '@dxos/react-client/echo';
9
+ import { Panel } from '@dxos/react-ui';
10
+ import { type Channel } from '@dxos/types';
11
+
12
+ import { ChannelChat } from '../ChannelChat';
13
+
14
+ export type ChannelArticleProps = AppSurface.ObjectArticleProps<
15
+ Channel.Channel | undefined,
16
+ {
17
+ roomId?: string;
18
+ fullscreen?: boolean;
19
+ }
20
+ >;
21
+
22
+ /**
23
+ * Renders the channel chat. The "Start video call" action and the in-call surface
24
+ * are contributed by plugin-calls — this container is call-agnostic.
25
+ */
26
+ // TODO(burdon): Create Radix style layout.
27
+ // TODO(burdon): Restore graph-driven toolbar so plugin-calls can contribute a "Start video call" action (F-1.1).
28
+ export const ChannelArticle = ({ subject: channel }: ChannelArticleProps) => {
29
+ const space = getSpace(channel);
30
+
31
+ if (channel && space) {
32
+ return (
33
+ <Panel.Root classNames='dx-document'>
34
+ <Panel.Content asChild>
35
+ <ChannelChat classNames='border' space={space} channel={channel} />
36
+ </Panel.Content>
37
+ </Panel.Root>
38
+ );
39
+ }
40
+
41
+ return null;
42
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export { ChannelArticle as default } from './ChannelArticle';
@@ -0,0 +1,75 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
8
+ import { Filter, Obj, Query } from '@dxos/echo';
9
+ import { type Space, useMembers, useQuery } from '@dxos/react-client/echo';
10
+ import { useIdentity } from '@dxos/react-client/halo';
11
+ import { type Channel, Message } from '@dxos/types';
12
+ import { composable, composableProps } from '@dxos/ui-theme';
13
+
14
+ import { Chat } from '#components';
15
+ import { useStatus } from '#hooks';
16
+ import { ThreadOperation } from '#types';
17
+
18
+ export type ChannelChatProps = {
19
+ space: Space;
20
+ channel: Channel.Channel;
21
+ };
22
+
23
+ /**
24
+ * Channel chat: composer pinned to the bottom of the panel, messages scrolling
25
+ * above it (newest at the bottom). Threading via `Message.threadId` is
26
+ * intentionally not reconstructed in this round.
27
+ *
28
+ * Externally-synced channels (any Channel carrying foreign-key `Obj.Meta`,
29
+ * e.g. Slack/Discord-sourced rooms) render read-only — the composer is
30
+ * suppressed because there's no local-write path back to the source.
31
+ */
32
+ export const ChannelChat = composable<HTMLDivElement, ChannelChatProps>(
33
+ ({ space, channel, ...props }, forwardedRef) => {
34
+ const identity = useIdentity()!;
35
+ const members = useMembers(space.id);
36
+ const id = Obj.getDXN(channel).toString();
37
+ const activity = useStatus(space, id);
38
+ const { invokePromise } = useOperationInvoker();
39
+
40
+ const feed = channel.feed?.target;
41
+ const messages = useQuery(
42
+ space.db,
43
+ feed ? Query.select(Filter.type(Message.Message)).from(feed) : Query.select(Filter.nothing()),
44
+ );
45
+
46
+ const readOnly = Obj.getMeta(channel).keys.length > 0;
47
+
48
+ const handleSend = (text: string) => {
49
+ if (readOnly) {
50
+ return false;
51
+ }
52
+ void invokePromise(ThreadOperation.AppendChannelMessage, {
53
+ channel,
54
+ sender: { identityDid: identity.did },
55
+ text,
56
+ });
57
+ return true;
58
+ };
59
+
60
+ return (
61
+ <Chat
62
+ {...composableProps(props)}
63
+ id={id}
64
+ identity={identity}
65
+ members={members}
66
+ messages={messages}
67
+ activity={activity}
68
+ onSend={handleSend}
69
+ orientation='bottom'
70
+ readOnly={readOnly}
71
+ ref={forwardedRef}
72
+ />
73
+ );
74
+ },
75
+ );
@@ -0,0 +1,8 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { ChannelChat } from './ChannelChat';
6
+
7
+ export { ChannelChat };
8
+ export default ChannelChat;
@@ -0,0 +1,215 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import { useAtomValue } from '@effect-atom/atom-react';
6
+ import React, { useCallback, useMemo } from 'react';
7
+
8
+ import { Capabilities } from '@dxos/app-framework';
9
+ import { useCapabilities, useCapability, useOperationInvoker } from '@dxos/app-framework/ui';
10
+ import { AppCapabilities, CollaborationOperation, LayoutOperation } from '@dxos/app-toolkit';
11
+ import { type AppSurface } from '@dxos/app-toolkit/ui';
12
+ import { Filter, Obj, Query, Ref, Relation } from '@dxos/echo';
13
+ import { useQuery } from '@dxos/react-client/echo';
14
+ import { useIdentity } from '@dxos/react-client/halo';
15
+ import { Panel, ScrollArea, Toolbar, useTranslation } from '@dxos/react-ui';
16
+ import { getParentId, useAttention } from '@dxos/react-ui-attention';
17
+ import { Tabs } from '@dxos/react-ui-tabs';
18
+ import { AnchoredTo, Thread } from '@dxos/types';
19
+
20
+ import { CommentsPanel, type CommentsPanelProps } from '#components';
21
+ import { meta } from '#meta';
22
+ import { ThreadOperation } from '#types';
23
+ import { ThreadCapabilities, type ViewState } from '#types';
24
+
25
+ const initialViewState: ViewState = { showResolvedThreads: false };
26
+
27
+ export type ThreadCompanionProps = AppSurface.ObjectArticleProps<
28
+ Thread.Thread,
29
+ {
30
+ attendableId?: string;
31
+ }
32
+ >;
33
+
34
+ export const ThreadCompanion = ({ attendableId, subject }: ThreadCompanionProps) => {
35
+ const { t } = useTranslation(meta.id);
36
+ const { invokePromise } = useOperationInvoker();
37
+ const identity = useIdentity();
38
+ const subjectId = Obj.getDXN(subject).toString();
39
+ const parentId = attendableId ? getParentId(attendableId) : undefined;
40
+ const registry = useCapability(Capabilities.AtomRegistry);
41
+
42
+ const stateAtom = useCapability(ThreadCapabilities.State);
43
+ const viewStoreAtom = useCapability(ThreadCapabilities.ViewState);
44
+ const state = useAtomValue(stateAtom);
45
+ const viewStore = useAtomValue(viewStoreAtom);
46
+ const drafts = state.drafts[subjectId];
47
+
48
+ // Get or initialize view state for this subject.
49
+ const viewState = useMemo(() => {
50
+ if (!viewStore[subjectId]) {
51
+ registry.set(viewStoreAtom, { ...viewStore, [subjectId]: { ...initialViewState } });
52
+ return initialViewState;
53
+ }
54
+ return viewStore[subjectId];
55
+ }, [viewStore, subjectId, registry, viewStoreAtom]);
56
+ const { showResolvedThreads } = viewState;
57
+
58
+ const onChangeViewState = useCallback(
59
+ (nextValue: string) => {
60
+ registry.set(viewStoreAtom, {
61
+ ...registry.get(viewStoreAtom),
62
+ [subjectId]: { ...registry.get(viewStoreAtom)[subjectId], showResolvedThreads: nextValue === 'all' },
63
+ });
64
+ },
65
+ [registry, viewStoreAtom, subjectId],
66
+ );
67
+
68
+ const commentConfigs = useCapabilities(AppCapabilities.CommentConfig);
69
+ const anchorSorts = useCapabilities(AppCapabilities.AnchorSort);
70
+ const sort = useMemo(
71
+ () => anchorSorts.find(({ key }) => key === Obj.getTypename(subject))?.sort,
72
+ [anchorSorts, subject],
73
+ );
74
+
75
+ const db = Obj.getDatabase(subject);
76
+ const objectsAnchoredTo = useQuery(db, Query.select(Filter.id(subject.id)).targetOf(AnchoredTo.AnchoredTo));
77
+ const anchors = objectsAnchoredTo
78
+ .toSorted((a, b) => sort?.(a, b) ?? 0)
79
+ .filter((anchor) => Obj.instanceOf(Thread.Thread, Relation.getSource(anchor)))
80
+ .concat(drafts ?? []);
81
+
82
+ const { hasAttention, isAncestor, isRelated } = useAttention(parentId);
83
+ const isAttended = hasAttention || isAncestor || isRelated;
84
+
85
+ const handleAttend = useCallback(
86
+ (anchor: AnchoredTo.AnchoredTo) => {
87
+ const thread = Relation.getSource(anchor) as Thread.Thread;
88
+ const threadId = Obj.getDXN(thread).toString();
89
+
90
+ if (state.current !== threadId) {
91
+ registry.set(stateAtom, { ...registry.get(stateAtom), current: threadId });
92
+
93
+ // Scroll plank into view (deck handler).
94
+ void invokePromise(LayoutOperation.ScrollIntoView, { subject: parentId });
95
+
96
+ // Scroll within content to anchor (comment config per typename).
97
+ if (anchor.anchor && parentId) {
98
+ const typename = Obj.getTypename(subject);
99
+ const commentConfig = commentConfigs.find(({ id }) => id === typename);
100
+ if (commentConfig?.scrollToAnchor) {
101
+ void invokePromise(commentConfig.scrollToAnchor, {
102
+ subject: parentId,
103
+ cursor: anchor.anchor,
104
+ ref: threadId,
105
+ });
106
+ }
107
+ }
108
+ }
109
+ },
110
+ [state.current, invokePromise, registry, stateAtom, parentId, subject, commentConfigs],
111
+ );
112
+
113
+ const handleComment = useCallback(
114
+ async (anchor: AnchoredTo.AnchoredTo, text: string) => {
115
+ await invokePromise(ThreadOperation.AddMessage, {
116
+ anchor,
117
+ subject,
118
+ sender: { identityDid: identity?.did },
119
+ text,
120
+ });
121
+
122
+ const thread = Relation.getSource(anchor) as Thread.Thread;
123
+ registry.set(stateAtom, { ...registry.get(stateAtom), current: Obj.getDXN(thread).toString() });
124
+ },
125
+ [invokePromise, identity, subject, registry, stateAtom],
126
+ );
127
+
128
+ const handleResolve = useCallback(
129
+ (anchor: AnchoredTo.AnchoredTo) =>
130
+ invokePromise(ThreadOperation.ToggleResolved, {
131
+ thread: Relation.getSource(anchor) as Thread.Thread,
132
+ }),
133
+ [invokePromise],
134
+ );
135
+
136
+ const handleThreadDelete = useCallback(
137
+ (anchor: AnchoredTo.AnchoredTo) => invokePromise(ThreadOperation.Delete, { anchor, subject }),
138
+ [invokePromise, subject],
139
+ );
140
+
141
+ const handleMessageDelete = useCallback(
142
+ (anchor: AnchoredTo.AnchoredTo, messageId: string) =>
143
+ invokePromise(ThreadOperation.DeleteMessage, {
144
+ anchor,
145
+ subject,
146
+ messageId,
147
+ }),
148
+ [invokePromise, subject],
149
+ );
150
+
151
+ const handleAcceptProposal = useCallback<NonNullable<CommentsPanelProps['onAcceptProposal']>>(
152
+ async (anchor, messageId) => {
153
+ const thread = Relation.getSource(anchor) as Thread.Thread;
154
+ const messageIndex = thread.messages.findIndex(Ref.hasObjectId(messageId));
155
+ const message = thread.messages[messageIndex]?.target;
156
+ const proposal = message?.blocks.find((block) => block._tag === 'proposal');
157
+ if (!proposal || !anchor.anchor) {
158
+ return;
159
+ }
160
+
161
+ await invokePromise(CollaborationOperation.AcceptProposal, {
162
+ subject,
163
+ anchor: anchor.anchor,
164
+ proposal,
165
+ });
166
+ await invokePromise(ThreadOperation.ToggleResolved, { thread });
167
+ },
168
+ [invokePromise, subject],
169
+ );
170
+
171
+ const comments = (
172
+ <CommentsPanel
173
+ anchors={anchors}
174
+ currentId={isAttended ? state.current : undefined}
175
+ showResolvedThreads={showResolvedThreads}
176
+ onAttend={handleAttend}
177
+ onComment={handleComment}
178
+ onResolve={handleResolve}
179
+ onMessageDelete={handleMessageDelete}
180
+ onThreadDelete={handleThreadDelete}
181
+ onAcceptProposal={handleAcceptProposal}
182
+ />
183
+ );
184
+
185
+ return (
186
+ <Tabs.Root
187
+ orientation='horizontal'
188
+ value={showResolvedThreads ? 'all' : 'unresolved'}
189
+ onValueChange={onChangeViewState}
190
+ >
191
+ <Panel.Root>
192
+ <Panel.Toolbar asChild>
193
+ <Toolbar.Root>
194
+ <Tabs.Tablist classNames='p-0'>
195
+ <Tabs.Tab classNames='text-sm' value='unresolved'>
196
+ {t('show-unresolved.label')}
197
+ </Tabs.Tab>
198
+ <Tabs.Tab classNames='text-sm' value='all'>
199
+ {t('show-all.label')}
200
+ </Tabs.Tab>
201
+ </Tabs.Tablist>
202
+ </Toolbar.Root>
203
+ </Panel.Toolbar>
204
+ <Panel.Content asChild>
205
+ <ScrollArea.Root thin>
206
+ <ScrollArea.Viewport>
207
+ <Tabs.Panel value='all'>{showResolvedThreads && comments}</Tabs.Panel>
208
+ <Tabs.Panel value='unresolved'>{!showResolvedThreads && comments}</Tabs.Panel>
209
+ </ScrollArea.Viewport>
210
+ </ScrollArea.Root>
211
+ </Panel.Content>
212
+ </Panel.Root>
213
+ </Tabs.Root>
214
+ );
215
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ export { ThreadCompanion as default } from './ThreadCompanion';
@@ -5,64 +5,62 @@
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React, { useState } from 'react';
7
7
 
8
- import { Capabilities, IntentPlugin, contributes, createSurface } from '@dxos/app-framework';
8
+ import { Capabilities, Capability } from '@dxos/app-framework';
9
9
  import { withPluginManager } from '@dxos/app-framework/testing';
10
- import { faker } from '@dxos/random';
10
+ import { Surface } from '@dxos/app-framework/ui';
11
+ import { corePlugins } from '@dxos/plugin-testing';
12
+ import { random } from '@dxos/random';
11
13
  import { useClient } from '@dxos/react-client';
12
14
  import { type Space } from '@dxos/react-client/echo';
13
15
  import { useIdentity } from '@dxos/react-client/halo';
14
16
  import { withClientProvider } from '@dxos/react-client/testing';
15
17
  import { useAsyncEffect } from '@dxos/react-ui';
16
- import { withTheme } from '@dxos/react-ui/testing';
17
18
  import { Thread as ThreadComponent } from '@dxos/react-ui-thread';
18
- import { DataType } from '@dxos/schema';
19
- import { render } from '@dxos/storybook-utils';
19
+ import { withLayout, Loading } from '@dxos/react-ui/testing';
20
+ import { Message, Thread } from '@dxos/types';
20
21
 
21
- import { translations } from '../translations';
22
- import { Channel, Thread } from '../types';
22
+ import { translations } from '#translations';
23
23
 
24
- import { ChatContainer } from './ChatContainer';
24
+ import { ThreadContainer } from './ThreadContainer';
25
25
 
26
- faker.seed(1);
26
+ random.seed(1);
27
27
 
28
28
  const DefaultStory = () => {
29
29
  const client = useClient();
30
30
  const identity = useIdentity();
31
31
  const [space, setSpace] = useState<Space>();
32
- const [channel, setChannel] = useState<Channel.Channel | null>();
32
+ const [thread, setThread] = useState<Thread.Thread | null>();
33
33
 
34
34
  useAsyncEffect(async () => {
35
35
  if (identity) {
36
36
  const space = await client.spaces.create();
37
- const channel = space.db.add(Channel.make());
37
+ const thread = space.db.add(Thread.make({ status: 'active' }));
38
38
  setSpace(space);
39
- setChannel(channel);
39
+ setThread(thread);
40
40
  }
41
41
  }, [identity]);
42
42
 
43
- if (!identity || !channel || !space || !channel.defaultThread.target) {
44
- return null;
43
+ if (!identity || !thread || !space) {
44
+ return <Loading data={{ identity: !!identity, space: !!space, thread: !!thread }} />;
45
45
  }
46
46
 
47
- return (
48
- <main className='is-full max-is-prose mli-auto bs-dvh overflow-hidden'>
49
- <ChatContainer space={space} thread={channel.defaultThread.target} />
50
- </main>
51
- );
47
+ return <ThreadContainer space={space} thread={thread} />;
52
48
  };
53
49
 
54
50
  const meta = {
55
- title: 'plugins/plugin-thread/Chat',
51
+ title: 'plugins/plugin-thread/containers/ThreadContainer',
56
52
  component: ThreadComponent.Root as any,
57
- render: render(DefaultStory),
53
+ render: DefaultStory,
58
54
  decorators: [
59
- withTheme,
55
+ withLayout({ layout: 'column' }),
56
+ // TODO(wittjosiah): This shouldn't depend on app framework (use withClientProvider instead).
57
+ // Currently this is required due to useOnEditAnalytics.
60
58
  withPluginManager({
61
- plugins: [IntentPlugin()],
59
+ plugins: corePlugins(),
62
60
  capabilities: [
63
- contributes(
61
+ Capability.contributes(
64
62
  Capabilities.ReactSurface,
65
- createSurface({
63
+ Surface.create({
66
64
  id: 'test',
67
65
  role: 'card',
68
66
  component: ({ role }) => <span>{JSON.stringify({ role })}</span>,
@@ -70,7 +68,10 @@ const meta = {
70
68
  ),
71
69
  ],
72
70
  }),
73
- withClientProvider({ createSpace: true, types: [Thread.Thread, Channel.Channel, DataType.Message] }),
71
+ withClientProvider({
72
+ createSpace: true,
73
+ types: [Thread.Thread, Message.Message],
74
+ }),
74
75
  ],
75
76
  parameters: {
76
77
  layout: 'fullscreen',
@@ -0,0 +1,75 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import React, { useMemo } from 'react';
6
+
7
+ import { Obj, Ref } from '@dxos/echo';
8
+ import { type Space, useMembers } from '@dxos/react-client/echo';
9
+ import { useIdentity } from '@dxos/react-client/halo';
10
+ import { type ThemedClassName } from '@dxos/react-ui';
11
+ import { type ThreadRootProps } from '@dxos/react-ui-thread';
12
+ import { Message, type Thread } from '@dxos/types';
13
+ import { composable, composableProps } from '@dxos/ui-theme';
14
+ import { isNonNullable } from '@dxos/util';
15
+
16
+ import { Chat } from '#components';
17
+ import { useStatus } from '#hooks';
18
+
19
+ export type ThreadContainerProps = ThemedClassName<
20
+ {
21
+ space: Space;
22
+ thread: Thread.Thread;
23
+ context?: Obj.Unknown;
24
+ autoFocusTextbox?: boolean;
25
+ } & Pick<ThreadRootProps, 'current'>
26
+ >;
27
+
28
+ /**
29
+ * Renders an AutoMerge {@link Thread} as a chat: appends new messages by pushing
30
+ * onto `thread.messages`. Used for comment threads and the meeting in-call chat.
31
+ */
32
+ export const ThreadContainer = composable<HTMLDivElement, ThreadContainerProps>(
33
+ ({ space, thread, context, autoFocusTextbox, current, ...props }, forwardedRef) => {
34
+ const id = Obj.getDXN(thread).toString();
35
+ const identity = useIdentity()!;
36
+ const members = useMembers(space?.id);
37
+ const activity = useStatus(space, id);
38
+
39
+ const messages = useMemo(
40
+ () => thread.messages.map((message) => message.target).filter(isNonNullable),
41
+ [thread.messages],
42
+ );
43
+
44
+ const handleSend = (text: string) => {
45
+ Obj.update(thread, (thread) => {
46
+ thread.messages.push(
47
+ Ref.make(
48
+ Obj.make(Message.Message, {
49
+ created: new Date().toISOString(),
50
+ sender: { identityDid: identity.did },
51
+ blocks: [{ _tag: 'text', text }],
52
+ properties: context ? { context: Ref.make(context) } : undefined,
53
+ }),
54
+ ),
55
+ );
56
+ });
57
+ return true;
58
+ };
59
+
60
+ return (
61
+ <Chat
62
+ {...composableProps(props)}
63
+ id={id}
64
+ identity={identity}
65
+ members={members}
66
+ messages={messages}
67
+ activity={activity}
68
+ onSend={handleSend}
69
+ autoFocusTextbox={autoFocusTextbox}
70
+ current={current}
71
+ ref={forwardedRef}
72
+ />
73
+ );
74
+ },
75
+ );
@@ -0,0 +1,8 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { ThreadContainer } from './ThreadContainer';
6
+
7
+ export { ThreadContainer };
8
+ export default ThreadContainer;
@@ -0,0 +1,10 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type ComponentType, lazy } from 'react';
6
+
7
+ export const ChannelChat: ComponentType<any> = lazy(() => import('./ChannelChat'));
8
+ export const ChannelArticle: ComponentType<any> = lazy(() => import('./ChannelArticle'));
9
+ export const ThreadContainer: ComponentType<any> = lazy(() => import('./ThreadContainer'));
10
+ export const ThreadCompanion: ComponentType<any> = lazy(() => import('./ThreadCompanion'));
@@ -5,8 +5,8 @@
5
5
  import { HighlightStyle, StreamLanguage, syntaxHighlighting } from '@codemirror/language';
6
6
  import { type Extension } from '@codemirror/state';
7
7
 
8
- import { tags } from '@dxos/react-ui-editor';
9
- import { mx } from '@dxos/react-ui-theme';
8
+ import { tags } from '@dxos/ui-editor';
9
+ import { mx } from '@dxos/ui-theme';
10
10
 
11
11
  /**
12
12
  * https://github.com/codemirror/stream-parser/blob/main/test/test-stream-parser.ts
@@ -29,7 +29,7 @@ const parser = StreamLanguage.define<{ count: number }>({
29
29
  const styles = HighlightStyle.define([
30
30
  {
31
31
  tag: tags.tagName,
32
- class: mx('dx-tag dx-tag--indigo text-baseText font-medium'),
32
+ class: mx('dx-tag dx-tag--indigo text-base-foreground font-medium'),
33
33
  },
34
34
  ]);
35
35
 
@@ -2,4 +2,5 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ export * from './command';
5
6
  export * from './threads';