@dxos/plugin-thread 0.8.4-main.72ec0f3 → 0.8.4-main.937b3ca

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 (353) hide show
  1. package/dist/lib/browser/app-graph-builder-SPAZN5XL.mjs +188 -0
  2. package/dist/lib/browser/app-graph-builder-SPAZN5XL.mjs.map +7 -0
  3. package/dist/lib/browser/blueprint-definition-UQ63QKQG.mjs +17 -0
  4. package/dist/lib/browser/blueprint-definition-UQ63QKQG.mjs.map +7 -0
  5. package/dist/lib/browser/blueprints/index.mjs +8 -0
  6. package/dist/lib/browser/call-manager-YBRTG6T3.mjs +26 -0
  7. package/dist/lib/browser/call-manager-YBRTG6T3.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-KOBXMDCI.mjs → chunk-DLO2G3DM.mjs} +14 -12
  9. package/dist/lib/browser/chunk-DLO2G3DM.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-ZCW3NSDZ.mjs → chunk-ERK254BS.mjs} +68 -51
  11. package/dist/lib/browser/chunk-ERK254BS.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  13. package/dist/lib/browser/chunk-TAWDJPMD.mjs +293 -0
  14. package/dist/lib/browser/chunk-TAWDJPMD.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-VZICDGBW.mjs +1813 -0
  16. package/dist/lib/browser/chunk-VZICDGBW.mjs.map +7 -0
  17. package/dist/lib/browser/{blueprint-definition-6BKYTMJS.mjs → chunk-ZFLSTQSE.mjs} +40 -38
  18. package/dist/lib/browser/chunk-ZFLSTQSE.mjs.map +7 -0
  19. package/dist/lib/browser/index.mjs +113 -105
  20. package/dist/lib/browser/index.mjs.map +4 -4
  21. package/dist/lib/browser/markdown-TSXOA3GV.mjs +210 -0
  22. package/dist/lib/browser/markdown-TSXOA3GV.mjs.map +7 -0
  23. package/dist/lib/browser/meta.json +1 -1
  24. package/dist/lib/browser/operation-resolver-MDMEBYH2.mjs +441 -0
  25. package/dist/lib/browser/operation-resolver-MDMEBYH2.mjs.map +7 -0
  26. package/dist/lib/browser/react-root-Q7U5D3DA.mjs +25 -0
  27. package/dist/lib/browser/react-root-Q7U5D3DA.mjs.map +7 -0
  28. package/dist/lib/browser/{react-surface-BCD5ODQ6.mjs → react-surface-WDZQSDWH.mjs} +35 -35
  29. package/dist/lib/browser/react-surface-WDZQSDWH.mjs.map +7 -0
  30. package/dist/lib/browser/repair-TDKAFAGH.mjs +38 -0
  31. package/dist/lib/browser/repair-TDKAFAGH.mjs.map +7 -0
  32. package/dist/lib/browser/settings-OOKKVXV7.mjs +32 -0
  33. package/dist/lib/browser/settings-OOKKVXV7.mjs.map +7 -0
  34. package/dist/lib/browser/state-3LKZHDRI.mjs +24 -0
  35. package/dist/lib/browser/state-3LKZHDRI.mjs.map +7 -0
  36. package/dist/lib/browser/types/index.mjs +7 -7
  37. package/dist/lib/node-esm/app-graph-builder-3LJAPDUW.mjs +189 -0
  38. package/dist/lib/node-esm/app-graph-builder-3LJAPDUW.mjs.map +7 -0
  39. package/dist/lib/node-esm/blueprint-definition-MZZXXL37.mjs +18 -0
  40. package/dist/lib/node-esm/blueprint-definition-MZZXXL37.mjs.map +7 -0
  41. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  42. package/dist/lib/node-esm/call-manager-MMCTNFOH.mjs +27 -0
  43. package/dist/lib/node-esm/call-manager-MMCTNFOH.mjs.map +7 -0
  44. package/dist/lib/node-esm/chunk-3RD3IVVD.mjs +1814 -0
  45. package/dist/lib/node-esm/chunk-3RD3IVVD.mjs.map +7 -0
  46. package/dist/lib/node-esm/{blueprint-definition-6LEAWSC7.mjs → chunk-AQHPP6ZX.mjs} +40 -38
  47. package/dist/lib/node-esm/chunk-AQHPP6ZX.mjs.map +7 -0
  48. package/dist/lib/node-esm/chunk-ARTUUKTM.mjs +294 -0
  49. package/dist/lib/node-esm/chunk-ARTUUKTM.mjs.map +7 -0
  50. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  51. package/dist/lib/node-esm/{chunk-PZH2EDU5.mjs → chunk-KRBZBJRI.mjs} +14 -12
  52. package/dist/lib/node-esm/chunk-KRBZBJRI.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-7KZWZS2U.mjs → chunk-QP3KQOPQ.mjs} +68 -51
  54. package/dist/lib/node-esm/chunk-QP3KQOPQ.mjs.map +7 -0
  55. package/dist/lib/node-esm/index.mjs +113 -105
  56. package/dist/lib/node-esm/index.mjs.map +4 -4
  57. package/dist/lib/node-esm/markdown-N2UJ3D6L.mjs +211 -0
  58. package/dist/lib/node-esm/markdown-N2UJ3D6L.mjs.map +7 -0
  59. package/dist/lib/node-esm/meta.json +1 -1
  60. package/dist/lib/node-esm/operation-resolver-7PHDJZA2.mjs +442 -0
  61. package/dist/lib/node-esm/operation-resolver-7PHDJZA2.mjs.map +7 -0
  62. package/dist/lib/node-esm/react-root-SZIGQRDZ.mjs +26 -0
  63. package/dist/lib/node-esm/react-root-SZIGQRDZ.mjs.map +7 -0
  64. package/dist/lib/node-esm/{react-surface-WZH7OAO3.mjs → react-surface-24PNWUDX.mjs} +35 -35
  65. package/dist/lib/node-esm/react-surface-24PNWUDX.mjs.map +7 -0
  66. package/dist/lib/node-esm/repair-LHLLGXKF.mjs +39 -0
  67. package/dist/lib/node-esm/repair-LHLLGXKF.mjs.map +7 -0
  68. package/dist/lib/node-esm/settings-LXZQXSPL.mjs +33 -0
  69. package/dist/lib/node-esm/settings-LXZQXSPL.mjs.map +7 -0
  70. package/dist/lib/node-esm/state-YYAK5ENM.mjs +25 -0
  71. package/dist/lib/node-esm/state-YYAK5ENM.mjs.map +7 -0
  72. package/dist/lib/node-esm/types/index.mjs +7 -7
  73. package/dist/types/src/ThreadPlugin.d.ts +2 -1
  74. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  75. package/dist/types/src/blueprints/index.d.ts +2 -0
  76. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  77. package/dist/types/src/blueprints/thread-blueprint.d.ts +21 -0
  78. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
  79. package/dist/types/src/calls/call-manager.d.ts +40 -30
  80. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  81. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +2 -2
  82. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  83. package/dist/types/src/calls/media-manager.d.ts +1 -1
  84. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  85. package/dist/types/src/calls/util/calls-service.d.ts +1 -1
  86. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  87. package/dist/types/src/calls/util/task-scheduling.d.ts +2 -2
  88. package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  90. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  92. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  93. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +9 -0
  94. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  96. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/call-manager/call-manager.d.ts +6 -0
  98. package/dist/types/src/capabilities/call-manager/call-manager.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/call-manager/index.d.ts +3 -0
  100. package/dist/types/src/capabilities/call-manager/index.d.ts.map +1 -0
  101. package/dist/types/src/capabilities/index.d.ts +10 -16
  102. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/markdown/index.d.ts +3 -0
  104. package/dist/types/src/capabilities/markdown/index.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/markdown/markdown.d.ts +5 -0
  106. package/dist/types/src/capabilities/markdown/markdown.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  108. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  110. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/react-root/index.d.ts +6 -0
  112. package/dist/types/src/capabilities/react-root/index.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/react-root/react-root.d.ts +9 -0
  114. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  116. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  118. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/repair/index.d.ts +3 -0
  120. package/dist/types/src/capabilities/repair/index.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/repair/repair.d.ts +6 -0
  122. package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/settings/index.d.ts +3 -0
  124. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  125. package/dist/types/src/capabilities/settings/settings.d.ts +5 -0
  126. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  127. package/dist/types/src/capabilities/state/index.d.ts +3 -0
  128. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  129. package/dist/types/src/capabilities/state/state.d.ts +7 -0
  130. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  131. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  132. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  133. package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
  134. package/dist/types/src/components/ChannelContainer.d.ts +4 -5
  135. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  136. package/dist/types/src/components/ChannelContainer.stories.d.ts +5 -1
  137. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/Chat.stories.d.ts +4 -0
  139. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  140. package/dist/types/src/components/ChatContainer.d.ts +2 -2
  141. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  142. package/dist/types/src/components/Comments.stories.d.ts +4 -0
  143. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  144. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  145. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
  146. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  147. package/dist/types/src/components/Media/VideoObject.d.ts +1 -1
  148. package/dist/types/src/components/Media/VideoObject.stories.d.ts +1 -1
  149. package/dist/types/src/components/MessageContainer.d.ts +3 -2
  150. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  151. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  152. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +4 -0
  153. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  154. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +4 -0
  155. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  156. package/dist/types/src/components/ThreadCompanion.d.ts.map +1 -1
  157. package/dist/types/src/components/ThreadSettings.d.ts +4 -2
  158. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  159. package/dist/types/src/components/index.d.ts +2 -2
  160. package/dist/types/src/components/index.d.ts.map +1 -1
  161. package/dist/types/src/components/testing.d.ts +1 -1
  162. package/dist/types/src/components/testing.d.ts.map +1 -1
  163. package/dist/types/src/extensions/threads.d.ts +7 -2
  164. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  165. package/dist/types/src/functions/create-proposals.d.ts.map +1 -1
  166. package/dist/types/src/hooks/analytics.d.ts +1 -2
  167. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  168. package/dist/types/src/index.d.ts +1 -1
  169. package/dist/types/src/index.d.ts.map +1 -1
  170. package/dist/types/src/meta.d.ts +2 -2
  171. package/dist/types/src/meta.d.ts.map +1 -1
  172. package/dist/types/src/testing/stories.d.ts +2 -1
  173. package/dist/types/src/testing/stories.d.ts.map +1 -1
  174. package/dist/types/src/translations.d.ts +4 -0
  175. package/dist/types/src/translations.d.ts.map +1 -1
  176. package/dist/types/src/types/Channel.d.ts +691 -12
  177. package/dist/types/src/types/Channel.d.ts.map +1 -1
  178. package/dist/types/src/types/capabilities.d.ts +23 -0
  179. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  180. package/dist/types/src/types/index.d.ts +1 -1
  181. package/dist/types/src/types/index.d.ts.map +1 -1
  182. package/dist/types/src/types/types.d.ts +3213 -354
  183. package/dist/types/src/types/types.d.ts.map +1 -1
  184. package/dist/types/tsconfig.tsbuildinfo +1 -1
  185. package/package.json +86 -69
  186. package/src/ThreadPlugin.tsx +54 -90
  187. package/src/blueprints/index.ts +5 -0
  188. package/src/blueprints/thread-blueprint.ts +32 -0
  189. package/src/calls/call-manager.ts +76 -52
  190. package/src/calls/call-swarm-synchronizer.ts +2 -2
  191. package/src/calls/media-manager.ts +1 -1
  192. package/src/calls/util/calls-service.ts +1 -1
  193. package/src/calls/util/task-scheduling.ts +4 -4
  194. package/src/capabilities/app-graph-builder/app-graph-builder.ts +201 -0
  195. package/src/capabilities/app-graph-builder/index.ts +7 -0
  196. package/src/capabilities/blueprint-definition/blueprint-definition.ts +23 -0
  197. package/src/capabilities/blueprint-definition/index.ts +7 -0
  198. package/src/capabilities/call-manager/call-manager.ts +26 -0
  199. package/src/capabilities/call-manager/index.ts +7 -0
  200. package/src/capabilities/index.ts +10 -13
  201. package/src/capabilities/markdown/index.ts +7 -0
  202. package/src/capabilities/markdown/markdown.ts +83 -0
  203. package/src/capabilities/operation-resolver/index.ts +7 -0
  204. package/src/capabilities/operation-resolver/operation-resolver.ts +400 -0
  205. package/src/capabilities/react-root/index.ts +7 -0
  206. package/src/capabilities/react-root/react-root.tsx +20 -0
  207. package/src/capabilities/react-surface/index.ts +7 -0
  208. package/src/capabilities/react-surface/react-surface.tsx +97 -0
  209. package/src/capabilities/repair/index.ts +7 -0
  210. package/src/capabilities/repair/repair.ts +51 -0
  211. package/src/capabilities/settings/index.ts +7 -0
  212. package/src/capabilities/settings/settings.ts +33 -0
  213. package/src/capabilities/state/index.ts +7 -0
  214. package/src/capabilities/state/state.ts +22 -0
  215. package/src/components/Call/Call.tsx +7 -3
  216. package/src/components/Call/Toolbar.tsx +28 -20
  217. package/src/components/CallSidebar.tsx +4 -2
  218. package/src/components/ChannelContainer.stories.tsx +12 -10
  219. package/src/components/ChannelContainer.tsx +18 -16
  220. package/src/components/Chat.stories.tsx +8 -8
  221. package/src/components/ChatContainer.tsx +8 -9
  222. package/src/components/Comments.stories.tsx +22 -20
  223. package/src/components/CommentsContainer.tsx +1 -2
  224. package/src/components/CommentsThreadContainer.tsx +10 -11
  225. package/src/components/Lobby/Lobby.tsx +8 -6
  226. package/src/components/Media/AudioStream.tsx +2 -2
  227. package/src/components/Media/VideoObject.tsx +1 -1
  228. package/src/components/MessageContainer.tsx +54 -23
  229. package/src/components/Participant/Participant.tsx +31 -18
  230. package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +1 -1
  231. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +1 -1
  232. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +1 -1
  233. package/src/components/ThreadCompanion.tsx +70 -65
  234. package/src/components/ThreadSettings.tsx +6 -1
  235. package/src/components/command-extension.ts +2 -2
  236. package/src/components/index.ts +2 -5
  237. package/src/components/testing.ts +1 -3
  238. package/src/extensions/threads.ts +78 -43
  239. package/src/functions/create-proposals.ts +6 -7
  240. package/src/hooks/analytics.ts +23 -20
  241. package/src/index.ts +1 -1
  242. package/src/meta.ts +2 -2
  243. package/src/testing/stories.ts +15 -11
  244. package/src/translations.ts +2 -0
  245. package/src/types/Channel.ts +13 -10
  246. package/src/types/capabilities.ts +34 -0
  247. package/src/types/index.ts +1 -1
  248. package/src/types/types.ts +161 -74
  249. package/dist/lib/browser/ChannelContainer-MX5ABVGC.mjs +0 -16
  250. package/dist/lib/browser/ChatContainer-7F5Y6GXJ.mjs +0 -15
  251. package/dist/lib/browser/app-graph-builder-HNYLII5E.mjs +0 -170
  252. package/dist/lib/browser/app-graph-builder-HNYLII5E.mjs.map +0 -7
  253. package/dist/lib/browser/blueprint-definition-6BKYTMJS.mjs.map +0 -7
  254. package/dist/lib/browser/call-manager-MAXQLMMS.mjs +0 -24
  255. package/dist/lib/browser/call-manager-MAXQLMMS.mjs.map +0 -7
  256. package/dist/lib/browser/chunk-BBTXGRIR.mjs +0 -18
  257. package/dist/lib/browser/chunk-BBTXGRIR.mjs.map +0 -7
  258. package/dist/lib/browser/chunk-BQWQFTWT.mjs +0 -612
  259. package/dist/lib/browser/chunk-BQWQFTWT.mjs.map +0 -7
  260. package/dist/lib/browser/chunk-FR6MEAZI.mjs +0 -377
  261. package/dist/lib/browser/chunk-FR6MEAZI.mjs.map +0 -7
  262. package/dist/lib/browser/chunk-INQVAYPN.mjs +0 -989
  263. package/dist/lib/browser/chunk-INQVAYPN.mjs.map +0 -7
  264. package/dist/lib/browser/chunk-K2DUJRFJ.mjs +0 -27
  265. package/dist/lib/browser/chunk-K2DUJRFJ.mjs.map +0 -7
  266. package/dist/lib/browser/chunk-KOBXMDCI.mjs.map +0 -7
  267. package/dist/lib/browser/chunk-NMJEVD36.mjs +0 -168
  268. package/dist/lib/browser/chunk-NMJEVD36.mjs.map +0 -7
  269. package/dist/lib/browser/chunk-OOUDK7Q7.mjs +0 -23
  270. package/dist/lib/browser/chunk-OOUDK7Q7.mjs.map +0 -7
  271. package/dist/lib/browser/chunk-ZCW3NSDZ.mjs.map +0 -7
  272. package/dist/lib/browser/intent-resolver-BOUT4WGY.mjs +0 -361
  273. package/dist/lib/browser/intent-resolver-BOUT4WGY.mjs.map +0 -7
  274. package/dist/lib/browser/markdown-74EUSQGV.mjs +0 -171
  275. package/dist/lib/browser/markdown-74EUSQGV.mjs.map +0 -7
  276. package/dist/lib/browser/react-root-BVG7B2LW.mjs +0 -28
  277. package/dist/lib/browser/react-root-BVG7B2LW.mjs.map +0 -7
  278. package/dist/lib/browser/react-surface-BCD5ODQ6.mjs.map +0 -7
  279. package/dist/lib/browser/settings-LGQUZITB.mjs +0 -22
  280. package/dist/lib/browser/settings-LGQUZITB.mjs.map +0 -7
  281. package/dist/lib/browser/state-36REWXO5.mjs +0 -34
  282. package/dist/lib/browser/state-36REWXO5.mjs.map +0 -7
  283. package/dist/lib/node-esm/ChannelContainer-2JJJ3IDK.mjs +0 -17
  284. package/dist/lib/node-esm/ChatContainer-C526R4DI.mjs +0 -16
  285. package/dist/lib/node-esm/app-graph-builder-SOCKP4ST.mjs +0 -171
  286. package/dist/lib/node-esm/app-graph-builder-SOCKP4ST.mjs.map +0 -7
  287. package/dist/lib/node-esm/blueprint-definition-6LEAWSC7.mjs.map +0 -7
  288. package/dist/lib/node-esm/call-manager-LC4OS2KD.mjs +0 -25
  289. package/dist/lib/node-esm/call-manager-LC4OS2KD.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-5DLH4MWN.mjs +0 -25
  291. package/dist/lib/node-esm/chunk-5DLH4MWN.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-7KZWZS2U.mjs.map +0 -7
  293. package/dist/lib/node-esm/chunk-JF7THR7F.mjs +0 -990
  294. package/dist/lib/node-esm/chunk-JF7THR7F.mjs.map +0 -7
  295. package/dist/lib/node-esm/chunk-JJW6YMLC.mjs +0 -613
  296. package/dist/lib/node-esm/chunk-JJW6YMLC.mjs.map +0 -7
  297. package/dist/lib/node-esm/chunk-PZH2EDU5.mjs.map +0 -7
  298. package/dist/lib/node-esm/chunk-TJKM5JZT.mjs +0 -169
  299. package/dist/lib/node-esm/chunk-TJKM5JZT.mjs.map +0 -7
  300. package/dist/lib/node-esm/chunk-TWKGDFCS.mjs +0 -378
  301. package/dist/lib/node-esm/chunk-TWKGDFCS.mjs.map +0 -7
  302. package/dist/lib/node-esm/chunk-XI45H4IV.mjs +0 -28
  303. package/dist/lib/node-esm/chunk-XI45H4IV.mjs.map +0 -7
  304. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs +0 -19
  305. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs.map +0 -7
  306. package/dist/lib/node-esm/intent-resolver-45PLIFCJ.mjs +0 -362
  307. package/dist/lib/node-esm/intent-resolver-45PLIFCJ.mjs.map +0 -7
  308. package/dist/lib/node-esm/markdown-566XXB55.mjs +0 -172
  309. package/dist/lib/node-esm/markdown-566XXB55.mjs.map +0 -7
  310. package/dist/lib/node-esm/react-root-DCY6DKLC.mjs +0 -29
  311. package/dist/lib/node-esm/react-root-DCY6DKLC.mjs.map +0 -7
  312. package/dist/lib/node-esm/react-surface-WZH7OAO3.mjs.map +0 -7
  313. package/dist/lib/node-esm/settings-WKLJSP6R.mjs +0 -23
  314. package/dist/lib/node-esm/settings-WKLJSP6R.mjs.map +0 -7
  315. package/dist/lib/node-esm/state-X3W67GTL.mjs +0 -35
  316. package/dist/lib/node-esm/state-X3W67GTL.mjs.map +0 -7
  317. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  318. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  319. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  320. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  321. package/dist/types/src/capabilities/call-manager.d.ts +0 -5
  322. package/dist/types/src/capabilities/call-manager.d.ts.map +0 -1
  323. package/dist/types/src/capabilities/capabilities.d.ts +0 -27
  324. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  325. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  326. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  327. package/dist/types/src/capabilities/markdown.d.ts +0 -4
  328. package/dist/types/src/capabilities/markdown.d.ts.map +0 -1
  329. package/dist/types/src/capabilities/react-root.d.ts +0 -7
  330. package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
  331. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  332. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  333. package/dist/types/src/capabilities/settings.d.ts +0 -4
  334. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  335. package/dist/types/src/capabilities/state.d.ts +0 -7
  336. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  337. package/dist/types/src/types/Thread.d.ts +0 -167
  338. package/dist/types/src/types/Thread.d.ts.map +0 -1
  339. package/src/capabilities/app-graph-builder.ts +0 -194
  340. package/src/capabilities/blueprint-definition.ts +0 -38
  341. package/src/capabilities/call-manager.ts +0 -20
  342. package/src/capabilities/capabilities.ts +0 -33
  343. package/src/capabilities/intent-resolver.ts +0 -311
  344. package/src/capabilities/markdown.ts +0 -71
  345. package/src/capabilities/react-root.tsx +0 -17
  346. package/src/capabilities/react-surface.tsx +0 -90
  347. package/src/capabilities/settings.ts +0 -19
  348. package/src/capabilities/state.ts +0 -26
  349. package/src/types/Thread.ts +0 -26
  350. /package/dist/lib/browser/{ChannelContainer-MX5ABVGC.mjs.map → blueprints/index.mjs.map} +0 -0
  351. /package/dist/lib/browser/{ChatContainer-7F5Y6GXJ.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  352. /package/dist/lib/node-esm/{ChannelContainer-2JJJ3IDK.mjs.map → blueprints/index.mjs.map} +0 -0
  353. /package/dist/lib/node-esm/{ChatContainer-C526R4DI.mjs.map → chunk-HSLMI22Q.mjs.map} +0 -0
@@ -4,16 +4,16 @@
4
4
 
5
5
  import { type Extension } from '@codemirror/state';
6
6
  import { EditorView } from '@codemirror/view';
7
- import { computed, effect } from '@preact/signals-core';
7
+ import { type Atom, type Registry } from '@effect-atom/atom-react';
8
8
 
9
- import { type PromiseIntentDispatcher, createIntent } from '@dxos/app-framework';
10
9
  import { Filter, Obj, Query, Relation } from '@dxos/echo';
10
+ import { createDocAccessor, getTextInRange } from '@dxos/echo-db';
11
+ import { type OperationInvoker } from '@dxos/operation';
11
12
  import { type Markdown } from '@dxos/plugin-markdown/types';
12
- import { createDocAccessor, getSource, getSpace, getTextInRange } from '@dxos/react-client/echo';
13
- import { comments, createExternalCommentSync } from '@dxos/react-ui-editor';
14
- import { AnchoredTo } from '@dxos/types';
13
+ import { AnchoredTo, Thread } from '@dxos/types';
14
+ import { comments, createExternalCommentSync } from '@dxos/ui-editor';
15
15
 
16
- import { Thread, ThreadAction, type ThreadState } from '../types';
16
+ import { ThreadOperation, type ThreadState } from '../types';
17
17
 
18
18
  // TODO(burdon): Factor out.
19
19
  const getName = (doc: Markdown.Document, anchor: string): string | undefined => {
@@ -23,46 +23,58 @@ const getName = (doc: Markdown.Document, anchor: string): string | undefined =>
23
23
  }
24
24
  };
25
25
 
26
+ export type ThreadStore = {
27
+ registry: Registry.Registry;
28
+ stateAtom: Atom.Writable<ThreadState>;
29
+ };
30
+
26
31
  /**
27
32
  * Construct plugins.
28
33
  */
29
- export const threads = (state: ThreadState, doc?: Markdown.Document, dispatch?: PromiseIntentDispatcher): Extension => {
30
- const space = doc && getSpace(doc);
31
- if (!doc || !space || !dispatch) {
34
+ export const threads = (
35
+ store: ThreadStore,
36
+ doc?: Markdown.Document,
37
+ invokePromise?: OperationInvoker.OperationInvoker['invokePromise'],
38
+ ): Extension => {
39
+ const db = doc && Obj.getDatabase(doc);
40
+ if (!doc || !db || !invokePromise) {
32
41
  // Include no-op comments extension here to ensure that the facets are always present when they are expected.
33
42
  // TODO(wittjosiah): The Editor should only look for these facets when comments are available.
34
43
  return [comments()];
35
44
  }
36
45
 
37
- const query = space.db.query(Query.select(Filter.ids(doc.id)).targetOf(AnchoredTo.AnchoredTo));
38
- const unsubscribe = query.subscribe();
46
+ const { registry, stateAtom } = store;
47
+ const objectId = Obj.getDXN(doc).toString();
48
+ const query = db.query(Query.select(Filter.id(doc.id)).targetOf(AnchoredTo.AnchoredTo));
39
49
 
40
- const anchors = computed(() =>
41
- query.objects
50
+ // Get current anchors by combining query results with store drafts.
51
+ const getAnchors = () =>
52
+ query.results
42
53
  .filter((anchor) => {
43
54
  const thread = Relation.getSource(anchor);
44
55
  return Obj.instanceOf(Thread.Thread, thread) && thread.status !== 'resolved';
45
56
  })
46
- .concat(state.drafts[Obj.getDXN(doc).toString()] ?? []),
47
- );
57
+ .concat(registry.get(stateAtom).drafts[objectId] ?? []);
48
58
 
49
59
  return [
50
60
  EditorView.domEventHandlers({
51
61
  destroy: () => {
52
- unsubscribe();
62
+ // Note: cleanup functions for subscriptions are handled by createExternalCommentSync.
53
63
  },
54
64
  }),
55
65
 
56
66
  EditorView.updateListener.of((update) => {
57
67
  if (update.docChanged) {
58
- anchors.value.forEach((anchor) => {
68
+ getAnchors().forEach((anchor) => {
59
69
  if (anchor.anchor) {
60
70
  // Only update if the name has changed, otherwise this will cause an infinite loop.
61
71
  // Skip if the name is empty; this means comment text was deleted, but thread name should remain.
62
72
  const name = getName(doc, anchor.anchor);
63
73
  const thread = Relation.getSource(anchor) as Thread.Thread;
64
74
  if (name && name !== thread.name) {
65
- thread.name = name;
75
+ Obj.change(thread, (t) => {
76
+ t.name = name;
77
+ });
66
78
  }
67
79
  }
68
80
  });
@@ -70,10 +82,18 @@ export const threads = (state: ThreadState, doc?: Markdown.Document, dispatch?:
70
82
  }),
71
83
 
72
84
  createExternalCommentSync(
73
- Obj.getDXN(doc).toString(),
74
- (sink) => effect(() => sink()),
85
+ objectId,
86
+ (sink) => {
87
+ // Subscribe to both query changes and store state changes.
88
+ const unsubQuery = query.subscribe(sink);
89
+ const unsubStore = registry.subscribe(stateAtom, sink);
90
+ return () => {
91
+ unsubQuery();
92
+ unsubStore();
93
+ };
94
+ },
75
95
  () =>
76
- anchors.value
96
+ getAnchors()
77
97
  .filter((anchor) => anchor.anchor)
78
98
  .map((anchor) => ({
79
99
  id: Obj.getDXN(Relation.getSource(anchor)).toString(),
@@ -82,52 +102,67 @@ export const threads = (state: ThreadState, doc?: Markdown.Document, dispatch?:
82
102
  ),
83
103
 
84
104
  comments({
85
- id: Obj.getDXN(doc).toString(),
105
+ id: objectId,
86
106
  onCreate: ({ cursor }) => {
87
107
  const name = getName(doc, cursor);
88
- void dispatch(
89
- createIntent(ThreadAction.Create, {
90
- anchor: cursor,
91
- name,
92
- subject: doc,
93
- }),
94
- );
108
+ void invokePromise(ThreadOperation.Create, {
109
+ anchor: cursor,
110
+ name,
111
+ subject: doc,
112
+ });
95
113
  },
96
114
  onDelete: ({ id }) => {
97
- const draft = state.drafts[Obj.getDXN(doc).toString()];
98
- if (draft) {
99
- const index = draft.findIndex((thread) => Obj.getDXN(thread).toString() === id);
115
+ const drafts = registry.get(stateAtom).drafts[objectId];
116
+ if (drafts) {
117
+ const index = drafts.findIndex((draft) => Relation.getDXN(draft).toString() === id);
100
118
  if (index !== -1) {
101
- draft.splice(index, 1);
119
+ const current = registry.get(stateAtom);
120
+ registry.set(stateAtom, {
121
+ ...current,
122
+ drafts: {
123
+ ...current.drafts,
124
+ [objectId]: current.drafts[objectId]?.filter((_, i) => i !== index),
125
+ },
126
+ });
102
127
  }
103
128
  }
104
129
 
105
- const thread = query.objects.find((object) => getSource(object).id === id);
130
+ const thread = query.results.find((object) => Relation.getSource(object).id === id);
106
131
  if (thread) {
107
- thread.anchor = undefined;
132
+ Relation.change(thread, (t) => {
133
+ t.anchor = undefined;
134
+ });
108
135
  }
109
136
  },
110
137
  onUpdate: ({ id, cursor }) => {
111
- const draft = state.drafts[Obj.getDXN(doc).toString()]?.find((thread) => Obj.getDXN(thread).toString() === id);
138
+ const draft = registry.get(stateAtom).drafts[objectId]?.find((d) => Relation.getDXN(d).toString() === id);
112
139
  if (draft) {
113
140
  const thread = Relation.getSource(draft) as Thread.Thread;
114
- thread.name = getName(doc, cursor);
115
- draft.anchor = cursor;
141
+ Obj.change(thread, (t) => {
142
+ t.name = getName(doc, cursor);
143
+ });
144
+ Relation.change(draft, (d) => {
145
+ d.anchor = cursor;
146
+ });
116
147
  }
117
148
 
118
- const relation = query.objects.find((object) => getSource(object).id === id);
149
+ const relation = query.results.find((object) => Relation.getSource(object).id === id);
119
150
  if (relation) {
120
- const thread = getSource(relation);
151
+ const thread = Relation.getSource(relation);
121
152
  if (Obj.instanceOf(Thread.Thread, thread)) {
122
- thread.name = getName(doc, cursor);
123
- relation.anchor = cursor;
153
+ Obj.change(thread, (t) => {
154
+ t.name = getName(doc, cursor);
155
+ });
156
+ Relation.change(relation, (r) => {
157
+ r.anchor = cursor;
158
+ });
124
159
  }
125
160
  }
126
161
  },
127
162
  onSelect: ({ selection }) => {
128
163
  const current = selection.current ?? selection.closest;
129
164
  if (current) {
130
- void dispatch(createIntent(ThreadAction.Select, { current }));
165
+ void invokePromise(ThreadOperation.Select, { current });
131
166
  }
132
167
  },
133
168
  }),
@@ -9,13 +9,12 @@ import * as Schema from 'effect/Schema';
9
9
 
10
10
  import { ArtifactId, computeDiffsWithCursors } from '@dxos/assistant';
11
11
  import { Obj, Ref, Relation } from '@dxos/echo';
12
+ import { Database } from '@dxos/echo';
12
13
  import { createDocAccessor } from '@dxos/echo-db';
13
- import { DatabaseService, defineFunction } from '@dxos/functions';
14
+ import { defineFunction } from '@dxos/functions';
14
15
  import { DXN } from '@dxos/keys';
15
16
  import { Markdown } from '@dxos/plugin-markdown/types';
16
- import { AnchoredTo, Message } from '@dxos/types';
17
-
18
- import { Thread } from '../types';
17
+ import { AnchoredTo, Message, Thread } from '@dxos/types';
19
18
 
20
19
  export default defineFunction({
21
20
  key: 'dxos.org/function/thread/create-proposals',
@@ -29,7 +28,7 @@ export default defineFunction({
29
28
  }),
30
29
  outputSchema: Schema.Void,
31
30
  handler: Effect.fn(function* ({ data: { id, diffs: _diffs } }) {
32
- const object = yield* DatabaseService.resolve(DXN.parse(id), Markdown.Document);
31
+ const object = yield* Database.Service.resolve(DXN.parse(id), Markdown.Document);
33
32
  const content = yield* Effect.promise(() => object.content.load());
34
33
  const accessor = createDocAccessor(content, ['content']);
35
34
 
@@ -48,8 +47,8 @@ export default defineFunction({
48
47
  [Relation.Target]: object,
49
48
  anchor: cursor,
50
49
  });
51
- yield* DatabaseService.add(thread);
52
- yield* DatabaseService.add(relation);
50
+ yield* Database.Service.add(thread);
51
+ yield* Database.Service.add(relation);
53
52
  }),
54
53
  ),
55
54
  Effect.allWith({ concurrency: 'unbounded' }),
@@ -4,34 +4,37 @@
4
4
 
5
5
  import { useCallback } from 'react';
6
6
 
7
- import { createIntent } from '@dxos/app-framework';
8
- import { useIntentDispatcher } from '@dxos/app-framework/react';
9
- import { type Live } from '@dxos/live-object';
10
- import { ObservabilityAction } from '@dxos/plugin-observability/types';
11
- import { getSpace } from '@dxos/react-client/echo';
7
+ import { useOperationInvoker } from '@dxos/app-framework/react';
8
+ import { Obj } from '@dxos/echo';
9
+ import { ObservabilityOperation } from '@dxos/plugin-observability/types';
12
10
  import { useOnTransition } from '@dxos/react-ui';
13
11
  import { type ContentBlock } from '@dxos/types';
14
12
 
15
- export const useOnEditAnalytics = (message: Live<any>, textBlock: ContentBlock.Text | undefined, editing: boolean) => {
16
- const { dispatchPromise: dispatch } = useIntentDispatcher();
13
+ export const useOnEditAnalytics = (
14
+ message: any | undefined,
15
+ textBlock: ContentBlock.Text | undefined,
16
+ editing: boolean,
17
+ ) => {
18
+ const { invokePromise } = useOperationInvoker();
17
19
 
18
20
  const onEdit = useCallback(() => {
19
- const space = getSpace(message);
20
- if (!space || !textBlock) {
21
+ if (!message || !textBlock) {
22
+ return;
23
+ }
24
+ const db = Obj.getDatabase(message);
25
+ if (!db) {
21
26
  return;
22
27
  }
23
28
 
24
- void dispatch(
25
- createIntent(ObservabilityAction.SendEvent, {
26
- name: 'threads.message.update',
27
- properties: {
28
- spaceId: space.id,
29
- messageId: message.id,
30
- messageLength: textBlock?.text.length,
31
- },
32
- }),
33
- );
34
- }, [dispatch, message, textBlock]);
29
+ void invokePromise(ObservabilityOperation.SendEvent, {
30
+ name: 'threads.message.update',
31
+ properties: {
32
+ spaceId: db.spaceId,
33
+ messageId: message.id,
34
+ messageLength: textBlock?.text.length,
35
+ },
36
+ });
37
+ }, [invokePromise, message, textBlock]);
35
38
 
36
39
  useOnTransition(editing, true, false, onEdit);
37
40
  };
package/src/index.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- export { ThreadCapabilities } from './capabilities';
5
+ export { ThreadCapabilities } from './types';
6
6
  export * from './calls';
7
7
  export * from './hooks';
8
8
  export * from './meta';
package/src/meta.ts CHANGED
@@ -2,11 +2,11 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type PluginMeta } from '@dxos/app-framework';
5
+ import { type Plugin } from '@dxos/app-framework';
6
6
  import { trim } from '@dxos/util';
7
7
 
8
8
  // TODO(wittjosiah): Needs screenshots.
9
- export const meta: PluginMeta = {
9
+ export const meta: Plugin.Meta = {
10
10
  id: 'dxos.org/plugin/thread',
11
11
  name: 'Chat',
12
12
  description: trim`
@@ -2,27 +2,31 @@
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 { OperationPlugin, type Plugin, SettingsPlugin } from '@dxos/app-framework';
6
8
  import { ClientPlugin } from '@dxos/plugin-client';
7
9
  import { GraphPlugin } from '@dxos/plugin-graph';
8
10
  import { SpacePlugin } from '@dxos/plugin-space';
9
11
  import { ThemePlugin } from '@dxos/plugin-theme';
10
12
  import { Config } from '@dxos/react-client';
11
- import { defaultTx } from '@dxos/react-ui-theme';
13
+ import { defaultTx } from '@dxos/ui-theme';
12
14
 
13
15
  import { ThreadPlugin } from '../ThreadPlugin';
14
16
  import { Channel } from '../types';
15
17
 
16
- export const createThreadPlugins = async () => [
18
+ export const createThreadPlugins = async (): Promise<Array<Plugin.Plugin>> => [
17
19
  ThemePlugin({ tx: defaultTx }),
18
20
  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
- },
21
+ onClientInitialized: ({ client }) =>
22
+ Effect.gen(function* () {
23
+ yield* Effect.promise(() => client.halo.createIdentity({ displayName: 'Test User' }));
24
+ }),
25
+ onSpacesReady: ({ client }) =>
26
+ Effect.gen(function* () {
27
+ yield* Effect.promise(() => client.spaces.default.waitUntilReady());
28
+ client.spaces.default.db.add(Channel.make());
29
+ }),
26
30
  config: new Config({
27
31
  runtime: {
28
32
  client: {
@@ -44,7 +48,7 @@ export const createThreadPlugins = async () => [
44
48
  }),
45
49
  }),
46
50
  SpacePlugin({}),
47
- IntentPlugin(),
51
+ OperationPlugin(),
48
52
  SettingsPlugin(),
49
53
  GraphPlugin(),
50
54
  ThreadPlugin(),
@@ -19,6 +19,7 @@ export const translations = [
19
19
  'object name placeholder': 'New channel',
20
20
  'rename object label': 'Rename channel',
21
21
  'delete object label': 'Delete channel',
22
+ 'object deleted label': 'Channel deleted',
22
23
  },
23
24
  [meta.id]: {
24
25
  'plugin name': 'Chat',
@@ -50,6 +51,7 @@ export const translations = [
50
51
  'comments label': 'Comments',
51
52
  'show all label': 'All comments',
52
53
  'show unresolved label': 'Unresolved comments',
54
+ 'add comment label': 'Add comment',
53
55
 
54
56
  'channel companion label': 'Channel',
55
57
  'call panel label': 'Active Call',
@@ -5,19 +5,22 @@
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
7
  import { Obj, Ref, Type } from '@dxos/echo';
8
- import { FormAnnotation } from '@dxos/echo/internal';
8
+ import { FormInputAnnotation } from '@dxos/echo/internal';
9
+ import { Thread } from '@dxos/types';
9
10
 
10
- import * as Thread from './Thread';
11
-
12
- const _Channel = Schema.Struct({
11
+ export const Channel = Schema.Struct({
13
12
  name: Schema.optional(Schema.String),
14
- defaultThread: Type.Ref(Thread.Thread).pipe(FormAnnotation.set(false)),
13
+ defaultThread: Type.Ref(Thread.Thread).pipe(FormInputAnnotation.set(false)),
15
14
  // 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;
15
+ threads: Type.Ref(Thread.Thread).pipe(Schema.Array, Schema.mutable, FormInputAnnotation.set(false)),
16
+ }).pipe(
17
+ Type.object({
18
+ typename: 'dxos.org/type/Channel',
19
+ version: '0.1.0',
20
+ }),
21
+ );
22
+
23
+ export interface Channel extends Schema.Schema.Type<typeof Channel> {}
21
24
 
22
25
  export const make = (props: Pick<Obj.MakeProps<typeof Channel>, 'name'> = {}) =>
23
26
  Obj.make(Channel, {
@@ -0,0 +1,34 @@
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 { type CallManager, type CallState, type MediaState } from '../calls';
10
+ import { meta } from '../meta';
11
+ import { type Channel, type ThreadSettingsProps, type ThreadState, type ViewStore } from '../types';
12
+
13
+ export namespace ThreadCapabilities {
14
+ export const Settings = Capability.make<Atom.Writable<ThreadSettingsProps>>(`${meta.id}/capability/settings`);
15
+ export const CallManager = Capability.make<CallManager>(`${meta.id}/capability/call-manager`);
16
+
17
+ // TODO(burdon): Better way to define specific extensions for meeting companions.
18
+ // TODO(burdon): This brings in deps from ../calls; how should we manage/minimize explicit type exposure to other plugins?
19
+ // TODO(wittjosiah): These callbacks could be intents once we support broadcast.
20
+ export type CallProperties = {
21
+ onJoin: (state: { channel?: Channel.Channel; roomId?: string }) => Promise<void>;
22
+ onLeave: (roomId?: string) => Promise<void>;
23
+ onCallStateUpdated: (callState: CallState) => Promise<void>;
24
+ onMediaStateUpdated: ([mediaState, isSpeaking]: [MediaState, boolean]) => Promise<void>;
25
+ };
26
+
27
+ export const CallExtension = Capability.make<CallProperties>(`${meta.id}/capability/call-extension`);
28
+
29
+ /** Thread state (drafts, toolbar state, current selection). */
30
+ export const State = Capability.make<Atom.Writable<ThreadState>>(`${meta.id}/capability/state`);
31
+
32
+ /** Per-subject view state (e.g., showResolvedThreads). */
33
+ export const ViewState = Capability.make<Atom.Writable<ViewStore>>(`${meta.id}/capability/view-state`);
34
+ }
@@ -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';