@dxos/plugin-thread 0.8.4-main.7ace549 → 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 (337) 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-TAWDJPMD.mjs +293 -0
  13. package/dist/lib/browser/chunk-TAWDJPMD.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-VZICDGBW.mjs +1813 -0
  15. package/dist/lib/browser/chunk-VZICDGBW.mjs.map +7 -0
  16. package/dist/lib/browser/{blueprint-definition-TQ4JFMZZ.mjs → chunk-ZFLSTQSE.mjs} +39 -34
  17. package/dist/lib/browser/chunk-ZFLSTQSE.mjs.map +7 -0
  18. package/dist/lib/browser/index.mjs +100 -90
  19. package/dist/lib/browser/index.mjs.map +4 -4
  20. package/dist/lib/browser/markdown-TSXOA3GV.mjs +210 -0
  21. package/dist/lib/browser/markdown-TSXOA3GV.mjs.map +7 -0
  22. package/dist/lib/browser/meta.json +1 -1
  23. package/dist/lib/browser/operation-resolver-MDMEBYH2.mjs +441 -0
  24. package/dist/lib/browser/operation-resolver-MDMEBYH2.mjs.map +7 -0
  25. package/dist/lib/browser/react-root-Q7U5D3DA.mjs +25 -0
  26. package/dist/lib/browser/react-root-Q7U5D3DA.mjs.map +7 -0
  27. package/dist/lib/browser/{react-surface-AUQQSQQC.mjs → react-surface-WDZQSDWH.mjs} +32 -33
  28. package/dist/lib/browser/react-surface-WDZQSDWH.mjs.map +7 -0
  29. package/dist/lib/browser/{repair-JFJLEM2O.mjs → repair-TDKAFAGH.mjs} +12 -9
  30. package/dist/lib/browser/repair-TDKAFAGH.mjs.map +7 -0
  31. package/dist/lib/browser/settings-OOKKVXV7.mjs +32 -0
  32. package/dist/lib/browser/settings-OOKKVXV7.mjs.map +7 -0
  33. package/dist/lib/browser/state-3LKZHDRI.mjs +24 -0
  34. package/dist/lib/browser/state-3LKZHDRI.mjs.map +7 -0
  35. package/dist/lib/browser/types/index.mjs +5 -4
  36. package/dist/lib/node-esm/app-graph-builder-3LJAPDUW.mjs +189 -0
  37. package/dist/lib/node-esm/app-graph-builder-3LJAPDUW.mjs.map +7 -0
  38. package/dist/lib/node-esm/blueprint-definition-MZZXXL37.mjs +18 -0
  39. package/dist/lib/node-esm/blueprint-definition-MZZXXL37.mjs.map +7 -0
  40. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  41. package/dist/lib/node-esm/call-manager-MMCTNFOH.mjs +27 -0
  42. package/dist/lib/node-esm/call-manager-MMCTNFOH.mjs.map +7 -0
  43. package/dist/lib/node-esm/chunk-3RD3IVVD.mjs +1814 -0
  44. package/dist/lib/node-esm/chunk-3RD3IVVD.mjs.map +7 -0
  45. package/dist/lib/node-esm/{blueprint-definition-TSX5HHW7.mjs → chunk-AQHPP6ZX.mjs} +39 -34
  46. package/dist/lib/node-esm/chunk-AQHPP6ZX.mjs.map +7 -0
  47. package/dist/lib/node-esm/chunk-ARTUUKTM.mjs +294 -0
  48. package/dist/lib/node-esm/chunk-ARTUUKTM.mjs.map +7 -0
  49. package/dist/lib/node-esm/{chunk-PZH2EDU5.mjs → chunk-KRBZBJRI.mjs} +14 -12
  50. package/dist/lib/node-esm/chunk-KRBZBJRI.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-7KZWZS2U.mjs → chunk-QP3KQOPQ.mjs} +68 -51
  52. package/dist/lib/node-esm/chunk-QP3KQOPQ.mjs.map +7 -0
  53. package/dist/lib/node-esm/index.mjs +100 -90
  54. package/dist/lib/node-esm/index.mjs.map +4 -4
  55. package/dist/lib/node-esm/markdown-N2UJ3D6L.mjs +211 -0
  56. package/dist/lib/node-esm/markdown-N2UJ3D6L.mjs.map +7 -0
  57. package/dist/lib/node-esm/meta.json +1 -1
  58. package/dist/lib/node-esm/operation-resolver-7PHDJZA2.mjs +442 -0
  59. package/dist/lib/node-esm/operation-resolver-7PHDJZA2.mjs.map +7 -0
  60. package/dist/lib/node-esm/react-root-SZIGQRDZ.mjs +26 -0
  61. package/dist/lib/node-esm/react-root-SZIGQRDZ.mjs.map +7 -0
  62. package/dist/lib/node-esm/{react-surface-AMVESEF4.mjs → react-surface-24PNWUDX.mjs} +32 -33
  63. package/dist/lib/node-esm/react-surface-24PNWUDX.mjs.map +7 -0
  64. package/dist/lib/node-esm/{repair-RMLR24YR.mjs → repair-LHLLGXKF.mjs} +12 -9
  65. package/dist/lib/node-esm/repair-LHLLGXKF.mjs.map +7 -0
  66. package/dist/lib/node-esm/settings-LXZQXSPL.mjs +33 -0
  67. package/dist/lib/node-esm/settings-LXZQXSPL.mjs.map +7 -0
  68. package/dist/lib/node-esm/state-YYAK5ENM.mjs +25 -0
  69. package/dist/lib/node-esm/state-YYAK5ENM.mjs.map +7 -0
  70. package/dist/lib/node-esm/types/index.mjs +5 -4
  71. package/dist/types/src/ThreadPlugin.d.ts +2 -1
  72. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  73. package/dist/types/src/blueprints/index.d.ts +2 -0
  74. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  75. package/dist/types/src/blueprints/thread-blueprint.d.ts +21 -0
  76. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
  77. package/dist/types/src/calls/call-manager.d.ts +40 -30
  78. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  79. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +2 -2
  80. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  81. package/dist/types/src/calls/media-manager.d.ts +1 -1
  82. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  83. package/dist/types/src/calls/util/calls-service.d.ts +1 -1
  84. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  85. package/dist/types/src/calls/util/task-scheduling.d.ts +2 -2
  86. package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  88. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  89. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  90. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +9 -0
  92. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  93. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  94. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/call-manager/call-manager.d.ts +6 -0
  96. package/dist/types/src/capabilities/call-manager/call-manager.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/call-manager/index.d.ts +3 -0
  98. package/dist/types/src/capabilities/call-manager/index.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/index.d.ts +10 -17
  100. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/markdown/index.d.ts +3 -0
  102. package/dist/types/src/capabilities/markdown/index.d.ts.map +1 -0
  103. package/dist/types/src/capabilities/markdown/markdown.d.ts +5 -0
  104. package/dist/types/src/capabilities/markdown/markdown.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  106. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  108. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/react-root/index.d.ts +6 -0
  110. package/dist/types/src/capabilities/react-root/index.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/react-root/react-root.d.ts +9 -0
  112. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  114. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  116. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/repair/index.d.ts +3 -0
  118. package/dist/types/src/capabilities/repair/index.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/repair/repair.d.ts +6 -0
  120. package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/settings/index.d.ts +3 -0
  122. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/settings/settings.d.ts +5 -0
  124. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  125. package/dist/types/src/capabilities/state/index.d.ts +3 -0
  126. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  127. package/dist/types/src/capabilities/state/state.d.ts +7 -0
  128. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  129. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  130. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  131. package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
  132. package/dist/types/src/components/ChannelContainer.d.ts +4 -5
  133. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  134. package/dist/types/src/components/ChannelContainer.stories.d.ts +1 -1
  135. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/ChatContainer.d.ts +1 -1
  137. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  138. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  139. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
  140. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  141. package/dist/types/src/components/Media/VideoObject.d.ts +1 -1
  142. package/dist/types/src/components/Media/VideoObject.stories.d.ts +1 -1
  143. package/dist/types/src/components/MessageContainer.d.ts +3 -4
  144. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  145. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  146. package/dist/types/src/components/ThreadCompanion.d.ts.map +1 -1
  147. package/dist/types/src/components/ThreadSettings.d.ts +4 -2
  148. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  149. package/dist/types/src/components/index.d.ts +2 -2
  150. package/dist/types/src/components/index.d.ts.map +1 -1
  151. package/dist/types/src/extensions/threads.d.ts +7 -2
  152. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  153. package/dist/types/src/functions/create-proposals.d.ts.map +1 -1
  154. package/dist/types/src/hooks/analytics.d.ts +1 -2
  155. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  156. package/dist/types/src/index.d.ts +1 -1
  157. package/dist/types/src/index.d.ts.map +1 -1
  158. package/dist/types/src/meta.d.ts +2 -2
  159. package/dist/types/src/meta.d.ts.map +1 -1
  160. package/dist/types/src/testing/stories.d.ts +2 -1
  161. package/dist/types/src/testing/stories.d.ts.map +1 -1
  162. package/dist/types/src/types/Channel.d.ts +691 -12
  163. package/dist/types/src/types/Channel.d.ts.map +1 -1
  164. package/dist/types/src/types/capabilities.d.ts +23 -0
  165. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  166. package/dist/types/src/types/index.d.ts +1 -0
  167. package/dist/types/src/types/index.d.ts.map +1 -1
  168. package/dist/types/src/types/types.d.ts +3182 -295
  169. package/dist/types/src/types/types.d.ts.map +1 -1
  170. package/dist/types/tsconfig.tsbuildinfo +1 -1
  171. package/package.json +86 -69
  172. package/src/ThreadPlugin.tsx +50 -80
  173. package/src/blueprints/index.ts +5 -0
  174. package/src/blueprints/thread-blueprint.ts +32 -0
  175. package/src/calls/call-manager.ts +76 -52
  176. package/src/calls/call-swarm-synchronizer.ts +2 -2
  177. package/src/calls/media-manager.ts +1 -1
  178. package/src/calls/util/calls-service.ts +1 -1
  179. package/src/calls/util/task-scheduling.ts +4 -4
  180. package/src/capabilities/app-graph-builder/app-graph-builder.ts +201 -0
  181. package/src/capabilities/app-graph-builder/index.ts +7 -0
  182. package/src/capabilities/blueprint-definition/blueprint-definition.ts +23 -0
  183. package/src/capabilities/blueprint-definition/index.ts +7 -0
  184. package/src/capabilities/call-manager/call-manager.ts +26 -0
  185. package/src/capabilities/call-manager/index.ts +7 -0
  186. package/src/capabilities/index.ts +10 -14
  187. package/src/capabilities/markdown/index.ts +7 -0
  188. package/src/capabilities/markdown/markdown.ts +83 -0
  189. package/src/capabilities/operation-resolver/index.ts +7 -0
  190. package/src/capabilities/operation-resolver/operation-resolver.ts +400 -0
  191. package/src/capabilities/react-root/index.ts +7 -0
  192. package/src/capabilities/react-root/react-root.tsx +20 -0
  193. package/src/capabilities/react-surface/index.ts +7 -0
  194. package/src/capabilities/react-surface/react-surface.tsx +97 -0
  195. package/src/capabilities/repair/index.ts +7 -0
  196. package/src/capabilities/{repair.ts → repair/repair.ts} +21 -10
  197. package/src/capabilities/settings/index.ts +7 -0
  198. package/src/capabilities/settings/settings.ts +33 -0
  199. package/src/capabilities/state/index.ts +7 -0
  200. package/src/capabilities/state/state.ts +22 -0
  201. package/src/components/Call/Call.tsx +7 -3
  202. package/src/components/Call/Toolbar.tsx +28 -20
  203. package/src/components/CallSidebar.tsx +4 -2
  204. package/src/components/ChannelContainer.stories.tsx +10 -8
  205. package/src/components/ChannelContainer.tsx +18 -16
  206. package/src/components/Chat.stories.tsx +6 -6
  207. package/src/components/ChatContainer.tsx +7 -7
  208. package/src/components/Comments.stories.tsx +21 -18
  209. package/src/components/CommentsThreadContainer.tsx +9 -9
  210. package/src/components/Lobby/Lobby.tsx +8 -6
  211. package/src/components/Media/AudioStream.tsx +2 -2
  212. package/src/components/Media/VideoObject.tsx +1 -1
  213. package/src/components/MessageContainer.tsx +53 -24
  214. package/src/components/Participant/Participant.tsx +31 -18
  215. package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +1 -1
  216. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +1 -1
  217. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +1 -1
  218. package/src/components/ThreadCompanion.tsx +69 -64
  219. package/src/components/ThreadSettings.tsx +6 -1
  220. package/src/components/command-extension.ts +2 -2
  221. package/src/components/index.ts +2 -5
  222. package/src/extensions/threads.ts +75 -41
  223. package/src/functions/create-proposals.ts +5 -4
  224. package/src/hooks/analytics.ts +23 -20
  225. package/src/index.ts +1 -1
  226. package/src/meta.ts +2 -2
  227. package/src/testing/stories.ts +15 -11
  228. package/src/types/Channel.ts +9 -5
  229. package/src/types/capabilities.ts +34 -0
  230. package/src/types/index.ts +1 -0
  231. package/src/types/types.ts +160 -73
  232. package/dist/lib/browser/ChannelContainer-L7MKV7DS.mjs +0 -17
  233. package/dist/lib/browser/ChatContainer-KPY4BAUE.mjs +0 -16
  234. package/dist/lib/browser/app-graph-builder-TWJ2UCOZ.mjs +0 -171
  235. package/dist/lib/browser/app-graph-builder-TWJ2UCOZ.mjs.map +0 -7
  236. package/dist/lib/browser/blueprint-definition-TQ4JFMZZ.mjs.map +0 -7
  237. package/dist/lib/browser/call-manager-4YFT4XA6.mjs +0 -25
  238. package/dist/lib/browser/call-manager-4YFT4XA6.mjs.map +0 -7
  239. package/dist/lib/browser/chunk-ALZKJOZK.mjs +0 -989
  240. package/dist/lib/browser/chunk-ALZKJOZK.mjs.map +0 -7
  241. package/dist/lib/browser/chunk-ANTFU4JB.mjs +0 -25
  242. package/dist/lib/browser/chunk-ANTFU4JB.mjs.map +0 -7
  243. package/dist/lib/browser/chunk-CFC7LEPD.mjs +0 -18
  244. package/dist/lib/browser/chunk-CFC7LEPD.mjs.map +0 -7
  245. package/dist/lib/browser/chunk-JDJPMI7V.mjs +0 -143
  246. package/dist/lib/browser/chunk-JDJPMI7V.mjs.map +0 -7
  247. package/dist/lib/browser/chunk-KOBXMDCI.mjs.map +0 -7
  248. package/dist/lib/browser/chunk-NPT5S6N4.mjs +0 -611
  249. package/dist/lib/browser/chunk-NPT5S6N4.mjs.map +0 -7
  250. package/dist/lib/browser/chunk-QM34EZQK.mjs +0 -20
  251. package/dist/lib/browser/chunk-QM34EZQK.mjs.map +0 -7
  252. package/dist/lib/browser/chunk-TLOOZTRD.mjs +0 -377
  253. package/dist/lib/browser/chunk-TLOOZTRD.mjs.map +0 -7
  254. package/dist/lib/browser/chunk-ZCW3NSDZ.mjs.map +0 -7
  255. package/dist/lib/browser/intent-resolver-G33FT3NO.mjs +0 -355
  256. package/dist/lib/browser/intent-resolver-G33FT3NO.mjs.map +0 -7
  257. package/dist/lib/browser/markdown-WFZFYJBQ.mjs +0 -172
  258. package/dist/lib/browser/markdown-WFZFYJBQ.mjs.map +0 -7
  259. package/dist/lib/browser/react-root-ED7PHA44.mjs +0 -29
  260. package/dist/lib/browser/react-root-ED7PHA44.mjs.map +0 -7
  261. package/dist/lib/browser/react-surface-AUQQSQQC.mjs.map +0 -7
  262. package/dist/lib/browser/repair-JFJLEM2O.mjs.map +0 -7
  263. package/dist/lib/browser/settings-E6IOLK46.mjs +0 -23
  264. package/dist/lib/browser/settings-E6IOLK46.mjs.map +0 -7
  265. package/dist/lib/browser/state-UYPLBGZJ.mjs +0 -35
  266. package/dist/lib/browser/state-UYPLBGZJ.mjs.map +0 -7
  267. package/dist/lib/node-esm/ChannelContainer-FYONOOZ6.mjs +0 -18
  268. package/dist/lib/node-esm/ChannelContainer-FYONOOZ6.mjs.map +0 -7
  269. package/dist/lib/node-esm/ChatContainer-TLQG23K7.mjs +0 -17
  270. package/dist/lib/node-esm/ChatContainer-TLQG23K7.mjs.map +0 -7
  271. package/dist/lib/node-esm/app-graph-builder-VD6I2V5H.mjs +0 -172
  272. package/dist/lib/node-esm/app-graph-builder-VD6I2V5H.mjs.map +0 -7
  273. package/dist/lib/node-esm/blueprint-definition-TSX5HHW7.mjs.map +0 -7
  274. package/dist/lib/node-esm/call-manager-UMUXEYH5.mjs +0 -26
  275. package/dist/lib/node-esm/call-manager-UMUXEYH5.mjs.map +0 -7
  276. package/dist/lib/node-esm/chunk-2AEIN5MI.mjs +0 -22
  277. package/dist/lib/node-esm/chunk-2AEIN5MI.mjs.map +0 -7
  278. package/dist/lib/node-esm/chunk-7KZWZS2U.mjs.map +0 -7
  279. package/dist/lib/node-esm/chunk-AB42KYF3.mjs +0 -990
  280. package/dist/lib/node-esm/chunk-AB42KYF3.mjs.map +0 -7
  281. package/dist/lib/node-esm/chunk-ATNY37UV.mjs +0 -27
  282. package/dist/lib/node-esm/chunk-ATNY37UV.mjs.map +0 -7
  283. package/dist/lib/node-esm/chunk-E5HNHFYH.mjs +0 -378
  284. package/dist/lib/node-esm/chunk-E5HNHFYH.mjs.map +0 -7
  285. package/dist/lib/node-esm/chunk-FF3QVPY4.mjs +0 -612
  286. package/dist/lib/node-esm/chunk-FF3QVPY4.mjs.map +0 -7
  287. package/dist/lib/node-esm/chunk-P2M364TO.mjs +0 -144
  288. package/dist/lib/node-esm/chunk-P2M364TO.mjs.map +0 -7
  289. package/dist/lib/node-esm/chunk-PZH2EDU5.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-RT6NRL2I.mjs +0 -19
  291. package/dist/lib/node-esm/chunk-RT6NRL2I.mjs.map +0 -7
  292. package/dist/lib/node-esm/intent-resolver-4PX3WXQG.mjs +0 -356
  293. package/dist/lib/node-esm/intent-resolver-4PX3WXQG.mjs.map +0 -7
  294. package/dist/lib/node-esm/markdown-CSR5MAPZ.mjs +0 -173
  295. package/dist/lib/node-esm/markdown-CSR5MAPZ.mjs.map +0 -7
  296. package/dist/lib/node-esm/react-root-DZN324JA.mjs +0 -30
  297. package/dist/lib/node-esm/react-root-DZN324JA.mjs.map +0 -7
  298. package/dist/lib/node-esm/react-surface-AMVESEF4.mjs.map +0 -7
  299. package/dist/lib/node-esm/repair-RMLR24YR.mjs.map +0 -7
  300. package/dist/lib/node-esm/settings-RGZHWDSO.mjs +0 -24
  301. package/dist/lib/node-esm/settings-RGZHWDSO.mjs.map +0 -7
  302. package/dist/lib/node-esm/state-XNWOLBNE.mjs +0 -36
  303. package/dist/lib/node-esm/state-XNWOLBNE.mjs.map +0 -7
  304. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  305. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  306. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  307. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  308. package/dist/types/src/capabilities/call-manager.d.ts +0 -5
  309. package/dist/types/src/capabilities/call-manager.d.ts.map +0 -1
  310. package/dist/types/src/capabilities/capabilities.d.ts +0 -27
  311. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  312. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  313. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  314. package/dist/types/src/capabilities/markdown.d.ts +0 -4
  315. package/dist/types/src/capabilities/markdown.d.ts.map +0 -1
  316. package/dist/types/src/capabilities/react-root.d.ts +0 -7
  317. package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
  318. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  319. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  320. package/dist/types/src/capabilities/repair.d.ts +0 -4
  321. package/dist/types/src/capabilities/repair.d.ts.map +0 -1
  322. package/dist/types/src/capabilities/settings.d.ts +0 -4
  323. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  324. package/dist/types/src/capabilities/state.d.ts +0 -7
  325. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  326. package/src/capabilities/app-graph-builder.ts +0 -194
  327. package/src/capabilities/blueprint-definition.ts +0 -38
  328. package/src/capabilities/call-manager.ts +0 -20
  329. package/src/capabilities/capabilities.ts +0 -33
  330. package/src/capabilities/intent-resolver.ts +0 -311
  331. package/src/capabilities/markdown.ts +0 -71
  332. package/src/capabilities/react-root.tsx +0 -17
  333. package/src/capabilities/react-surface.tsx +0 -91
  334. package/src/capabilities/settings.ts +0 -19
  335. package/src/capabilities/state.ts +0 -26
  336. /package/dist/lib/browser/{ChannelContainer-L7MKV7DS.mjs.map → blueprints/index.mjs.map} +0 -0
  337. /package/dist/lib/{browser/ChatContainer-KPY4BAUE.mjs.map → node-esm/blueprints/index.mjs.map} +0 -0
@@ -0,0 +1,188 @@
1
+ import {
2
+ getAnchor
3
+ } from "./chunk-CP7E2HRE.mjs";
4
+ import {
5
+ Channel_exports,
6
+ ThreadCapabilities,
7
+ ThreadOperation,
8
+ meta
9
+ } from "./chunk-TAWDJPMD.mjs";
10
+ import "./chunk-J5LGTIGS.mjs";
11
+
12
+ // src/capabilities/app-graph-builder/app-graph-builder.ts
13
+ import { Atom } from "@effect-atom/atom-react";
14
+ import * as Effect from "effect/Effect";
15
+ import * as Option from "effect/Option";
16
+ import { Capability, Common } from "@dxos/app-framework";
17
+ import { Obj } from "@dxos/echo";
18
+ import { Operation } from "@dxos/operation";
19
+ import { AttentionCapabilities } from "@dxos/plugin-attention";
20
+ import { ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE, PLANK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
21
+ import { GraphBuilder, NodeMatcher } from "@dxos/plugin-graph";
22
+ import { defaultSelection } from "@dxos/react-ui-attention";
23
+ var commentDisabledFamily = Atom.family(({ stateAtom, selectionManager, objectId, commentsType, selectionMode }) => Atom.make((get) => {
24
+ const stateAtoms = get(stateAtom);
25
+ const state = stateAtoms[0] ? get(stateAtoms[0]) : void 0;
26
+ const toolbar = state?.toolbar ?? {};
27
+ const selectionState = get(selectionManager.state);
28
+ const selection = selectionState.selections[objectId] ?? (selectionMode ? defaultSelection(selectionMode) : void 0);
29
+ const anchor = getAnchor(selection);
30
+ const invalidSelection = !anchor;
31
+ const overlappingComment = toolbar[objectId];
32
+ return commentsType === "anchored" && invalidSelection || overlappingComment;
33
+ }));
34
+ var whenCommentableObject = NodeMatcher.whenAll(NodeMatcher.whenEchoObjectMatches, NodeMatcher.whenNot(NodeMatcher.whenEchoTypeMatches(Channel_exports.Channel)));
35
+ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function* () {
36
+ const capabilities = yield* Capability.Service;
37
+ const resolve = (typename) => capabilities.getAll(Common.Capability.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
38
+ const extensions = yield* Effect.all([
39
+ GraphBuilder.createExtension({
40
+ id: `${meta.id}/active-call`,
41
+ match: NodeMatcher.whenRoot,
42
+ connector: (node, get) => {
43
+ const callManagerAtom = capabilities.atom(ThreadCapabilities.CallManager);
44
+ const [call] = get(callManagerAtom);
45
+ if (!call) {
46
+ return Effect.succeed([]);
47
+ }
48
+ const joined = get(call.joinedAtom);
49
+ return Effect.succeed(joined ? [
50
+ {
51
+ id: `${node.id}${ATTENDABLE_PATH_SEPARATOR}active-call`,
52
+ type: DECK_COMPANION_TYPE,
53
+ data: null,
54
+ properties: {
55
+ label: [
56
+ "call panel label",
57
+ {
58
+ ns: meta.id
59
+ }
60
+ ],
61
+ icon: "ph--video-conference--regular",
62
+ position: "hoist",
63
+ disposition: "hidden"
64
+ }
65
+ }
66
+ ] : []);
67
+ }
68
+ }),
69
+ GraphBuilder.createTypeExtension({
70
+ id: `${meta.id}/channel-chat-companion`,
71
+ type: Channel_exports.Channel,
72
+ connector: (channel, get) => {
73
+ const callManager = capabilities.get(ThreadCapabilities.CallManager);
74
+ const joined = get(callManager.joinedAtom);
75
+ const roomId = get(callManager.roomIdAtom);
76
+ const isActive = joined && roomId === Obj.getDXN(channel).toString();
77
+ if (!isActive) {
78
+ return Effect.succeed([]);
79
+ }
80
+ return Effect.succeed([
81
+ {
82
+ id: `${Obj.getDXN(channel).toString()}${ATTENDABLE_PATH_SEPARATOR}chat`,
83
+ type: PLANK_COMPANION_TYPE,
84
+ data: "chat",
85
+ properties: {
86
+ label: [
87
+ "channel companion label",
88
+ {
89
+ ns: meta.id
90
+ }
91
+ ],
92
+ icon: "ph--hash--regular",
93
+ position: "hoist",
94
+ disposition: "hidden"
95
+ }
96
+ }
97
+ ]);
98
+ }
99
+ }),
100
+ GraphBuilder.createExtension({
101
+ id: `${meta.id}/comments-companion`,
102
+ match: (node) => {
103
+ if (!Obj.isObject(node.data) || Option.isNone(whenCommentableObject(node))) {
104
+ return Option.none();
105
+ }
106
+ const metadata = resolve(Obj.getTypename(node.data));
107
+ return typeof metadata.comments === "string" ? Option.some(node) : Option.none();
108
+ },
109
+ connector: (node) => Effect.succeed([
110
+ {
111
+ id: [
112
+ node.id,
113
+ "comments"
114
+ ].join(ATTENDABLE_PATH_SEPARATOR),
115
+ type: PLANK_COMPANION_TYPE,
116
+ data: "comments",
117
+ properties: {
118
+ label: [
119
+ "comments label",
120
+ {
121
+ ns: meta.id
122
+ }
123
+ ],
124
+ icon: "ph--chat-text--regular",
125
+ disposition: "hidden",
126
+ position: "hoist"
127
+ }
128
+ }
129
+ ])
130
+ }),
131
+ GraphBuilder.createExtension({
132
+ id: `${meta.id}/comment-toolbar`,
133
+ match: (node) => {
134
+ if (!Obj.isObject(node.data) || Option.isNone(whenCommentableObject(node))) {
135
+ return Option.none();
136
+ }
137
+ const metadata = resolve(Obj.getTypename(node.data));
138
+ return typeof metadata.comments === "string" ? Option.some(node.data) : Option.none();
139
+ },
140
+ actions: (object, get) => {
141
+ const stateAtom = capabilities.atom(ThreadCapabilities.State);
142
+ const selectionManager = capabilities.get(AttentionCapabilities.Selection);
143
+ const objectId = Obj.getDXN(object).toString();
144
+ const metadata = resolve(Obj.getTypename(object));
145
+ const disabled = get(commentDisabledFamily({
146
+ stateAtom,
147
+ selectionManager,
148
+ objectId,
149
+ commentsType: metadata.comments,
150
+ selectionMode: metadata.selectionMode
151
+ }));
152
+ return Effect.succeed([
153
+ {
154
+ id: `${Obj.getDXN(object).toString()}/comment`,
155
+ data: Effect.fnUntraced(function* () {
156
+ const metadata2 = resolve(Obj.getTypename(object));
157
+ const selection = selectionManager.getSelection(Obj.getDXN(object).toString());
158
+ const anchor = metadata2.comments === "anchored" ? getAnchor(selection) : Date.now().toString();
159
+ const name = metadata2.getAnchorLabel?.(object, anchor);
160
+ yield* Operation.invoke(ThreadOperation.Create, {
161
+ anchor,
162
+ name,
163
+ subject: object
164
+ });
165
+ }),
166
+ properties: {
167
+ label: [
168
+ "add comment label",
169
+ {
170
+ ns: meta.id
171
+ }
172
+ ],
173
+ icon: "ph--chat-text--regular",
174
+ disposition: "toolbar",
175
+ disabled,
176
+ testId: "thread.comment.add"
177
+ }
178
+ }
179
+ ]);
180
+ }
181
+ })
182
+ ]);
183
+ return Capability.contributes(Common.Capability.AppGraphBuilder, extensions);
184
+ }));
185
+ export {
186
+ app_graph_builder_default as default
187
+ };
188
+ //# sourceMappingURL=app-graph-builder-SPAZN5XL.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Capability, Common } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { Operation } from '@dxos/operation';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { GraphBuilder, NodeMatcher } from '@dxos/plugin-graph';\nimport { type SelectionManager, type SelectionMode, defaultSelection } from '@dxos/react-ui-attention';\n\nimport { meta } from '../../meta';\nimport { Channel, ThreadCapabilities, ThreadOperation, type ThreadState } from '../../types';\nimport { getAnchor } from '../../util';\n\ntype CommentDisabledParams = {\n stateAtom: Atom.Atom<Atom.Writable<ThreadState>[]>;\n selectionManager: SelectionManager;\n objectId: string;\n commentsType: string;\n selectionMode: SelectionMode | undefined;\n};\n\n/**\n * Atom family to derive whether the comment button should be disabled.\n * Uses a composite key to ensure proper caching.\n */\nconst commentDisabledFamily = Atom.family(\n ({ stateAtom, selectionManager, objectId, commentsType, selectionMode }: CommentDisabledParams) =>\n Atom.make((get) => {\n const stateAtoms = get(stateAtom);\n const state = stateAtoms[0] ? get(stateAtoms[0]) : undefined;\n const toolbar = state?.toolbar ?? {};\n const selectionState = get(selectionManager.state);\n const selection =\n selectionState.selections[objectId] ?? (selectionMode ? defaultSelection(selectionMode) : undefined);\n const anchor = getAnchor(selection);\n const invalidSelection = !anchor;\n const overlappingComment = toolbar[objectId];\n return (commentsType === 'anchored' && invalidSelection) || overlappingComment;\n }),\n);\n\n/** Match ECHO objects that are NOT Channels (i.e. objects that can have comments). */\nconst whenCommentableObject = NodeMatcher.whenAll(\n NodeMatcher.whenEchoObjectMatches,\n NodeMatcher.whenNot(NodeMatcher.whenEchoTypeMatches(Channel.Channel)),\n);\n\n// TODO(wittjosiah): Highlight active calls in L1.\n// Track active meetings by subscribing to meetings query and polling the swarms of recent meetings in the space.\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n\n const resolve = (typename: string) =>\n capabilities.getAll(Common.Capability.Metadata).find(({ id }: { id: string }) => id === typename)?.metadata ?? {};\n\n const extensions = yield* Effect.all([\n GraphBuilder.createExtension({\n id: `${meta.id}/active-call`,\n match: NodeMatcher.whenRoot,\n connector: (node, get) => {\n const callManagerAtom = capabilities.atom(ThreadCapabilities.CallManager);\n const [call] = get(callManagerAtom);\n if (!call) {\n return Effect.succeed([]);\n }\n // Use derived joinedAtom for efficient subscription.\n const joined = get(call.joinedAtom);\n return Effect.succeed(\n joined\n ? [\n {\n id: `${node.id}${ATTENDABLE_PATH_SEPARATOR}active-call`,\n type: DECK_COMPANION_TYPE,\n data: null,\n properties: {\n label: ['call panel label', { ns: meta.id }],\n icon: 'ph--video-conference--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ]\n : [],\n );\n },\n }),\n GraphBuilder.createTypeExtension({\n id: `${meta.id}/channel-chat-companion`,\n type: Channel.Channel,\n connector: (channel, get) => {\n const callManager = capabilities.get(ThreadCapabilities.CallManager);\n // Use derived atoms for efficient subscription.\n const joined = get(callManager.joinedAtom);\n const roomId = get(callManager.roomIdAtom);\n const isActive = joined && roomId === Obj.getDXN(channel).toString();\n if (!isActive) {\n return Effect.succeed([]);\n }\n\n return Effect.succeed([\n {\n id: `${Obj.getDXN(channel).toString()}${ATTENDABLE_PATH_SEPARATOR}chat`,\n type: PLANK_COMPANION_TYPE,\n data: 'chat',\n properties: {\n label: ['channel companion label', { ns: meta.id }],\n icon: 'ph--hash--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ]);\n },\n }),\n GraphBuilder.createExtension({\n id: `${meta.id}/comments-companion`,\n match: (node) => {\n if (!Obj.isObject(node.data) || Option.isNone(whenCommentableObject(node))) {\n return Option.none();\n }\n const metadata = resolve(Obj.getTypename(node.data)!);\n return typeof metadata.comments === 'string' ? Option.some(node) : Option.none();\n },\n connector: (node) =>\n Effect.succeed([\n {\n id: [node.id, 'comments'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'comments',\n properties: {\n label: ['comments label', { ns: meta.id }],\n icon: 'ph--chat-text--regular',\n disposition: 'hidden',\n position: 'hoist',\n },\n },\n ]),\n }),\n GraphBuilder.createExtension({\n id: `${meta.id}/comment-toolbar`,\n match: (node) => {\n if (!Obj.isObject(node.data) || Option.isNone(whenCommentableObject(node))) {\n return Option.none();\n }\n const metadata = resolve(Obj.getTypename(node.data)!);\n return typeof metadata.comments === 'string' ? Option.some(node.data) : Option.none();\n },\n actions: (object, get) => {\n const stateAtom = capabilities.atom(ThreadCapabilities.State);\n const selectionManager = capabilities.get(AttentionCapabilities.Selection);\n const objectId = Obj.getDXN(object).toString();\n const metadata = resolve(Obj.getTypename(object)!);\n\n const disabled = get(\n commentDisabledFamily({\n stateAtom,\n selectionManager,\n objectId,\n commentsType: metadata.comments as string,\n selectionMode: metadata.selectionMode,\n }),\n );\n\n return Effect.succeed([\n {\n id: `${Obj.getDXN(object).toString()}/comment`,\n data: Effect.fnUntraced(function* () {\n const metadata = resolve(Obj.getTypename(object)!);\n const selection = selectionManager.getSelection(Obj.getDXN(object).toString());\n const anchor = metadata.comments === 'anchored' ? getAnchor(selection) : Date.now().toString();\n const name = metadata.getAnchorLabel?.(object, anchor);\n yield* Operation.invoke(ThreadOperation.Create, {\n anchor,\n name,\n subject: object,\n });\n }),\n properties: {\n label: ['add comment label', { ns: meta.id }],\n icon: 'ph--chat-text--regular',\n disposition: 'toolbar',\n disabled,\n testId: 'thread.comment.add',\n },\n },\n ]);\n },\n }),\n ]);\n\n return Capability.contributes(Common.Capability.AppGraphBuilder, extensions);\n }),\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["Atom", "Effect", "Option", "Capability", "Common", "Obj", "Operation", "AttentionCapabilities", "ATTENDABLE_PATH_SEPARATOR", "DECK_COMPANION_TYPE", "PLANK_COMPANION_TYPE", "GraphBuilder", "NodeMatcher", "defaultSelection", "commentDisabledFamily", "Atom", "family", "stateAtom", "selectionManager", "objectId", "commentsType", "selectionMode", "make", "get", "stateAtoms", "state", "undefined", "toolbar", "selectionState", "selection", "selections", "defaultSelection", "anchor", "getAnchor", "invalidSelection", "overlappingComment", "whenCommentableObject", "NodeMatcher", "whenAll", "whenEchoObjectMatches", "whenNot", "whenEchoTypeMatches", "Channel", "Capability", "makeModule", "fnUntraced", "capabilities", "Service", "resolve", "typename", "getAll", "Common", "Metadata", "find", "id", "metadata", "extensions", "all", "GraphBuilder", "createExtension", "meta", "match", "whenRoot", "connector", "node", "callManagerAtom", "atom", "ThreadCapabilities", "CallManager", "call", "succeed", "joined", "joinedAtom", "ATTENDABLE_PATH_SEPARATOR", "type", "DECK_COMPANION_TYPE", "data", "properties", "label", "ns", "icon", "position", "disposition", "createTypeExtension", "channel", "callManager", "roomId", "roomIdAtom", "isActive", "Obj", "getDXN", "toString", "PLANK_COMPANION_TYPE", "isObject", "isNone", "none", "getTypename", "comments", "some", "join", "actions", "object", "State", "AttentionCapabilities", "Selection", "disabled", "getSelection", "Date", "now", "name", "getAnchorLabel", "Operation", "invoke", "ThreadOperation", "Create", "subject", "testId", "contributes", "AppGraphBuilder"]
7
+ }
@@ -0,0 +1,17 @@
1
+ import {
2
+ thread_blueprint_exports
3
+ } from "./chunk-ZFLSTQSE.mjs";
4
+ import "./chunk-J5LGTIGS.mjs";
5
+
6
+ // src/capabilities/blueprint-definition/blueprint-definition.ts
7
+ import * as Effect from "effect/Effect";
8
+ import { Capability, Common } from "@dxos/app-framework";
9
+ var blueprintDefinition = Capability.makeModule(() => Effect.succeed([
10
+ Capability.contributes(Common.Capability.Functions, thread_blueprint_exports.functions),
11
+ Capability.contributes(Common.Capability.BlueprintDefinition, thread_blueprint_exports.make())
12
+ ]));
13
+ var blueprint_definition_default = blueprintDefinition;
14
+ export {
15
+ blueprint_definition_default as default
16
+ };
17
+ //# sourceMappingURL=blueprint-definition-UQ63QKQG.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/blueprint-definition/blueprint-definition.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability, Common } from '@dxos/app-framework';\n\nimport { ThreadBlueprint } from '../../blueprints';\n\nexport type BlueprintCapabilities = [\n Capability.Capability<typeof Common.Capability.Functions>,\n Capability.Capability<typeof Common.Capability.BlueprintDefinition>,\n];\n\nconst blueprintDefinition = Capability.makeModule<[], BlueprintCapabilities>(() =>\n Effect.succeed([\n Capability.contributes(Common.Capability.Functions, ThreadBlueprint.functions),\n Capability.contributes(Common.Capability.BlueprintDefinition, ThreadBlueprint.make()),\n ]),\n);\n\nexport default blueprintDefinition;\n"],
5
+ "mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,YAAYC,cAAc;AASnC,IAAMC,sBAAsBC,WAAWC,WAAsC,MACpEC,eAAQ;EACbF,WAAWG,YAAYC,OAAOJ,WAAWK,WAAWC,yBAAgBC,SAAS;EAC7EP,WAAWG,YAAYC,OAAOJ,WAAWQ,qBAAqBF,yBAAgBG,KAAI,CAAA;CACnF,CAAA;AAGH,IAAA,+BAAeV;",
6
+ "names": ["Effect", "Capability", "Common", "blueprintDefinition", "Capability", "makeModule", "succeed", "contributes", "Common", "Functions", "ThreadBlueprint", "functions", "BlueprintDefinition", "make"]
7
+ }
@@ -0,0 +1,8 @@
1
+ import {
2
+ thread_blueprint_exports
3
+ } from "../chunk-ZFLSTQSE.mjs";
4
+ import "../chunk-J5LGTIGS.mjs";
5
+ export {
6
+ thread_blueprint_exports as ThreadBlueprint
7
+ };
8
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,26 @@
1
+ import {
2
+ CallManager
3
+ } from "./chunk-ERK254BS.mjs";
4
+ import "./chunk-ISCHODBV.mjs";
5
+ import {
6
+ ThreadCapabilities
7
+ } from "./chunk-TAWDJPMD.mjs";
8
+ import "./chunk-J5LGTIGS.mjs";
9
+
10
+ // src/capabilities/call-manager/call-manager.ts
11
+ import * as Effect from "effect/Effect";
12
+ import { Capability, Common } from "@dxos/app-framework";
13
+ import { ClientCapabilities } from "@dxos/plugin-client";
14
+ var call_manager_default = Capability.makeModule(Effect.fnUntraced(function* () {
15
+ const client = yield* Capability.get(ClientCapabilities.Client);
16
+ const registry = yield* Capability.get(Common.Capability.AtomRegistry);
17
+ const callManager = new CallManager(client, registry);
18
+ yield* Effect.tryPromise(() => callManager.open());
19
+ return Capability.contributes(ThreadCapabilities.CallManager, callManager, () => Effect.sync(() => {
20
+ void callManager.close();
21
+ }));
22
+ }));
23
+ export {
24
+ call_manager_default as default
25
+ };
26
+ //# sourceMappingURL=call-manager-YBRTG6T3.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/call-manager/call-manager.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability, Common } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { CallManager } from '../../calls';\nimport { ThreadCapabilities } from '../../types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n const registry = yield* Capability.get(Common.Capability.AtomRegistry);\n const callManager = new CallManager(client, registry);\n yield* Effect.tryPromise(() => callManager.open());\n\n return Capability.contributes(ThreadCapabilities.CallManager, callManager, () =>\n Effect.sync(() => {\n void callManager.close();\n }),\n );\n }),\n);\n"],
5
+ "mappings": ";;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,YAAYC,cAAc;AACnC,SAASC,0BAA0B;AAKnC,IAAA,uBAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,SAAS,OAAOH,WAAWI,IAAIC,mBAAmBC,MAAM;AAC9D,QAAMC,WAAW,OAAOP,WAAWI,IAAII,OAAOR,WAAWS,YAAY;AACrE,QAAMC,cAAc,IAAIC,YAAYR,QAAQI,QAAAA;AAC5C,SAAcK,kBAAW,MAAMF,YAAYG,KAAI,CAAA;AAE/C,SAAOb,WAAWc,YAAYC,mBAAmBJ,aAAaD,aAAa,MAClEM,YAAK,MAAA;AACV,SAAKN,YAAYO,MAAK;EACxB,CAAA,CAAA;AAEJ,CAAA,CAAA;",
6
+ "names": ["Effect", "Capability", "Common", "ClientCapabilities", "Capability", "makeModule", "fnUntraced", "client", "get", "ClientCapabilities", "Client", "registry", "Common", "AtomRegistry", "callManager", "CallManager", "tryPromise", "open", "contributes", "ThreadCapabilities", "sync", "close"]
7
+ }
@@ -5,28 +5,30 @@ import {
5
5
 
6
6
  // src/hooks/analytics.ts
7
7
  import { useCallback } from "react";
8
- import { createIntent } from "@dxos/app-framework";
9
- import { useIntentDispatcher } from "@dxos/app-framework/react";
10
- import { ObservabilityAction } from "@dxos/plugin-observability/types";
11
- import { getSpace } from "@dxos/react-client/echo";
8
+ import { useOperationInvoker } from "@dxos/app-framework/react";
9
+ import { Obj } from "@dxos/echo";
10
+ import { ObservabilityOperation } from "@dxos/plugin-observability/types";
12
11
  import { useOnTransition } from "@dxos/react-ui";
13
12
  var useOnEditAnalytics = (message, textBlock, editing) => {
14
- const { dispatchPromise: dispatch } = useIntentDispatcher();
13
+ const { invokePromise } = useOperationInvoker();
15
14
  const onEdit = useCallback(() => {
16
- const space = getSpace(message);
17
- if (!space || !textBlock) {
15
+ if (!message || !textBlock) {
18
16
  return;
19
17
  }
20
- void dispatch(createIntent(ObservabilityAction.SendEvent, {
18
+ const db = Obj.getDatabase(message);
19
+ if (!db) {
20
+ return;
21
+ }
22
+ void invokePromise(ObservabilityOperation.SendEvent, {
21
23
  name: "threads.message.update",
22
24
  properties: {
23
- spaceId: space.id,
25
+ spaceId: db.spaceId,
24
26
  messageId: message.id,
25
27
  messageLength: textBlock?.text.length
26
28
  }
27
- }));
29
+ });
28
30
  }, [
29
- dispatch,
31
+ invokePromise,
30
32
  message,
31
33
  textBlock
32
34
  ]);
@@ -179,4 +181,4 @@ export {
179
181
  useStatus,
180
182
  useVideoStreamTrack
181
183
  };
182
- //# sourceMappingURL=chunk-KOBXMDCI.mjs.map
184
+ //# sourceMappingURL=chunk-DLO2G3DM.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/analytics.ts", "../../../src/hooks/useBlackCanvasStreamTrack.tsx", "../../../src/hooks/useDebugMode.ts", "../../../src/hooks/useInaudibleAudioStreamTrack.tsx", "../../../src/hooks/useStatus.ts", "../../../src/hooks/useVideoStreamTrack.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/react';\nimport { Obj } from '@dxos/echo';\nimport { ObservabilityOperation } from '@dxos/plugin-observability/types';\nimport { useOnTransition } from '@dxos/react-ui';\nimport { type ContentBlock } from '@dxos/types';\n\nexport const useOnEditAnalytics = (\n message: any | undefined,\n textBlock: ContentBlock.Text | undefined,\n editing: boolean,\n) => {\n const { invokePromise } = useOperationInvoker();\n\n const onEdit = useCallback(() => {\n if (!message || !textBlock) {\n return;\n }\n const db = Obj.getDatabase(message);\n if (!db) {\n return;\n }\n\n void invokePromise(ObservabilityOperation.SendEvent, {\n name: 'threads.message.update',\n properties: {\n spaceId: db.spaceId,\n messageId: message.id,\n messageLength: textBlock?.text.length,\n },\n });\n }, [invokePromise, message, textBlock]);\n\n useOnTransition(editing, true, false, onEdit);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { scheduleTask } from '@dxos/async';\nimport { Context } from '@dxos/context';\n\nimport { createBlackCanvasStreamTrack } from '../calls/util/stub-media-streams';\n\nexport const useBlackCanvasStreamTrack = () => {\n const [blackCanvasStreamTrack, setBlackCanvasStreamTrack] = useState<MediaStreamTrack | undefined>(undefined);\n useEffect(() => {\n const ctx = new Context();\n scheduleTask(ctx, async () => {\n const blackCanvasStreamTrack = await createBlackCanvasStreamTrack({ ctx, width: 720, height: 480 });\n setBlackCanvasStreamTrack(blackCanvasStreamTrack);\n });\n\n return () => {\n void ctx.dispose();\n };\n }, []);\n\n return blackCanvasStreamTrack;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\n// TODO(burdon): Standardize across plugins/composer.\nexport const useDebugMode = () => {\n const [enabled, setEnabled] = useState(false);\n useEffect(() => {\n const handler = (ev: KeyboardEvent) => {\n if (ev.key.toLowerCase() === 'd' && ev.ctrlKey) {\n ev.preventDefault();\n setEnabled(!enabled);\n }\n };\n\n document.addEventListener('keypress', handler);\n return () => {\n document.removeEventListener('keypress', handler);\n };\n }, [enabled]);\n\n return enabled;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { scheduleTask } from '@dxos/async';\nimport { Context } from '@dxos/context';\n\nimport { createInaudibleAudioStreamTrack } from '../calls/util/stub-media-streams';\n\nexport const useInaudibleAudioStreamTrack = () => {\n const [audioStreamTrack, setAudioStreamTrack] = useState<MediaStreamTrack | undefined>(undefined);\n useEffect(() => {\n const ctx = new Context();\n scheduleTask(ctx, async () => {\n const audioStreamTrack = await createInaudibleAudioStreamTrack({ ctx });\n setAudioStreamTrack(audioStreamTrack);\n });\n\n return () => {\n void ctx.dispose();\n };\n }, []);\n\n return audioStreamTrack;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\n\n// TODO(burdon): Generalize and factor out.\nexport const useStatus = (space?: Space, channel?: string) => {\n const [processing, setProcessing] = useState(false);\n useEffect(() => {\n if (!space || !channel) {\n return;\n }\n\n const unsubscribe = space.listen(`status/${channel}`, (status) => {\n const { event } = status.payload ?? {};\n setProcessing(event === 'processing');\n });\n\n const t = setInterval(() => {\n setProcessing((prev: any) => {\n if (typeof prev?.ts === 'number' && Date.now() - prev.ts > 30_000) {\n return undefined;\n } else {\n return prev;\n }\n });\n }, 1_000);\n\n return () => {\n unsubscribe();\n clearInterval(t);\n };\n }, [space, channel]);\n\n return processing;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type RefObject, useEffect, useRef, useState } from 'react';\n\nexport const useVideoStreamTrack = (videoElement: RefObject<HTMLVideoElement | null>, videoSrc: string) => {\n // Get video stream track.\n const [videoStreamTrack, setVideoStreamTrack] = useState<MediaStreamTrack | undefined>(undefined);\n const hadRun = useRef(false);\n useEffect(() => {\n // This is done to capture only one video stream.\n if (!videoElement.current || hadRun.current || !videoSrc) {\n return;\n }\n hadRun.current = true;\n videoElement.current.addEventListener('playing', () => {\n if (videoStreamTrack) {\n return;\n }\n const stream = (videoElement.current as any).captureStream();\n const track = stream.getTracks()[0];\n if (track && !videoStreamTrack) {\n setVideoStreamTrack(track);\n }\n stream.onaddtrack = (event: MediaStreamTrackEvent) => {\n if (event.track.kind === 'video' && !videoStreamTrack) {\n setVideoStreamTrack(event.track);\n }\n };\n });\n videoElement.current.src = videoSrc;\n }, [videoElement.current, videoSrc]);\n\n return videoStreamTrack;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["useCallback", "useOperationInvoker", "Obj", "ObservabilityOperation", "useOnTransition", "useOnEditAnalytics", "message", "textBlock", "editing", "invokePromise", "useOperationInvoker", "onEdit", "useCallback", "db", "Obj", "getDatabase", "ObservabilityOperation", "SendEvent", "name", "properties", "spaceId", "messageId", "id", "messageLength", "text", "length", "useOnTransition", "useEffect", "useState", "scheduleTask", "Context", "useBlackCanvasStreamTrack", "blackCanvasStreamTrack", "setBlackCanvasStreamTrack", "useState", "undefined", "useEffect", "ctx", "Context", "scheduleTask", "createBlackCanvasStreamTrack", "width", "height", "dispose", "useEffect", "useState", "useDebugMode", "enabled", "setEnabled", "useState", "useEffect", "handler", "ev", "key", "toLowerCase", "ctrlKey", "preventDefault", "document", "addEventListener", "removeEventListener", "useEffect", "useState", "scheduleTask", "Context", "useInaudibleAudioStreamTrack", "audioStreamTrack", "setAudioStreamTrack", "useState", "undefined", "useEffect", "ctx", "Context", "scheduleTask", "createInaudibleAudioStreamTrack", "dispose", "useEffect", "useState", "useStatus", "space", "channel", "processing", "setProcessing", "useState", "useEffect", "unsubscribe", "listen", "status", "event", "payload", "t", "setInterval", "prev", "ts", "Date", "now", "undefined", "clearInterval", "useEffect", "useRef", "useState", "useVideoStreamTrack", "videoElement", "videoSrc", "videoStreamTrack", "setVideoStreamTrack", "useState", "undefined", "hadRun", "useRef", "useEffect", "current", "addEventListener", "stream", "captureStream", "track", "getTracks", "onaddtrack", "event", "kind", "src"]
7
+ }
@@ -1562,11 +1562,10 @@ _ts_decorate2([
1562
1562
  ], MediaManager.prototype, "leave", null);
1563
1563
 
1564
1564
  // src/calls/call-manager.ts
1565
- import { computed } from "@preact/signals-core";
1565
+ import { Atom } from "@effect-atom/atom-react";
1566
1566
  import { Event as Event4, synchronized as synchronized3 } from "@dxos/async";
1567
1567
  import { Resource as Resource5 } from "@dxos/context";
1568
1568
  import { invariant as invariant5 } from "@dxos/invariant";
1569
- import { live } from "@dxos/live-object";
1570
1569
  import { isNonNullable as isNonNullable2 } from "@dxos/util";
1571
1570
  function _ts_decorate3(decorators, target, key, desc) {
1572
1571
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1577,74 +1576,89 @@ function _ts_decorate3(decorators, target, key, desc) {
1577
1576
  var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-manager.ts";
1578
1577
  var CallManager = class extends Resource5 {
1579
1578
  _client;
1579
+ _registry;
1580
1580
  callStateUpdated = new Event4();
1581
1581
  // TODO(wittjosiah): Consolidate isSpeaking into the MediaState type.
1582
1582
  mediaStateUpdated = new Event4();
1583
1583
  left = new Event4();
1584
1584
  /**
1585
- * Live object state. Is changed on internal events.
1585
+ * Atom-based state. Updated via `_updateState()`.
1586
1586
  * CAUTION: Do not change directly.
1587
1587
  */
1588
- _state = live({
1588
+ _stateAtom = Atom.make({
1589
1589
  call: {},
1590
1590
  media: {
1591
1591
  pulledAudioTracks: {},
1592
1592
  pulledVideoStreams: {}
1593
1593
  }
1594
1594
  });
1595
- // TODO(wittjosiah): This shouldn't be necessary, live-object's signals should be granular.
1596
- _raisedHandSignal = computed(() => this._state.call.raisedHand ?? false);
1597
- _speakingSignal = computed(() => this._state.call.speaking ?? false);
1598
- _joinedSignal = computed(() => this._state.call.joined ?? false);
1595
+ // Derived atoms for reactive subscriptions.
1596
+ _roomIdAtom = Atom.make((get) => get(this._stateAtom).call.roomId);
1597
+ _raisedHandAtom = Atom.make((get) => get(this._stateAtom).call.raisedHand ?? false);
1598
+ _speakingAtom = Atom.make((get) => get(this._stateAtom).call.speaking ?? false);
1599
+ _joinedAtom = Atom.make((get) => get(this._stateAtom).call.joined ?? false);
1600
+ _selfAtom = Atom.make((get) => get(this._stateAtom).call.self ?? {});
1601
+ _tracksAtom = Atom.make((get) => get(this._stateAtom).call.tracks ?? {});
1602
+ _usersAtom = Atom.make((get) => get(this._stateAtom).call.users ?? []);
1603
+ _mediaAtom = Atom.make((get) => get(this._stateAtom).media);
1604
+ _audioTracksToPlayAtom = Atom.make((get) => {
1605
+ const state = get(this._stateAtom);
1606
+ return (state.call.users ?? []).map((user) => user.tracks?.audioEnabled ? user.tracks?.audio : void 0).filter(isNonNullable2).map((track) => state.media.pulledAudioTracks[track]?.track).filter(isNonNullable2);
1607
+ });
1608
+ _videoStreamAtomFamily = Atom.family((name) => Atom.make((get) => get(this._stateAtom).media.pulledVideoStreams[name]?.stream));
1609
+ _activityAtomFamily = Atom.family((key) => Atom.make((get) => get(this._stateAtom).call.activities?.[key]));
1599
1610
  _swarmSynchronizer;
1600
1611
  _mediaManager;
1601
- /** @reactive */
1602
- get roomId() {
1603
- return this._state.call.roomId;
1612
+ //
1613
+ // Derived atoms for reactive UI subscriptions.
1614
+ //
1615
+ /** Derived atom for roomId. */
1616
+ get roomIdAtom() {
1617
+ return this._roomIdAtom;
1604
1618
  }
1605
- /** @reactive */
1606
- get raisedHand() {
1607
- return this._raisedHandSignal.value;
1619
+ /** Derived atom for raisedHand. */
1620
+ get raisedHandAtom() {
1621
+ return this._raisedHandAtom;
1608
1622
  }
1609
- /** @reactive */
1610
- get speaking() {
1611
- return this._speakingSignal.value;
1623
+ /** Derived atom for speaking. */
1624
+ get speakingAtom() {
1625
+ return this._speakingAtom;
1612
1626
  }
1613
- /** @reactive */
1614
- get joined() {
1615
- return this._joinedSignal.value;
1627
+ /** Derived atom for joined. */
1628
+ get joinedAtom() {
1629
+ return this._joinedAtom;
1616
1630
  }
1617
- /** @reactive */
1618
- get self() {
1619
- return this._state.call.self ?? {};
1631
+ /** Derived atom for self. */
1632
+ get selfAtom() {
1633
+ return this._selfAtom;
1620
1634
  }
1621
- /** @reactive */
1622
- get tracks() {
1623
- return this._state.call.tracks ?? {};
1635
+ /** Derived atom for tracks. */
1636
+ get tracksAtom() {
1637
+ return this._tracksAtom;
1624
1638
  }
1625
- /** @reactive */
1626
- get users() {
1627
- return this._state.call.users ?? [];
1639
+ /** Derived atom for users. */
1640
+ get usersAtom() {
1641
+ return this._usersAtom;
1628
1642
  }
1629
- /** @reactive */
1630
- get media() {
1631
- return this._state.media;
1643
+ /** Derived atom for media. */
1644
+ get mediaAtom() {
1645
+ return this._mediaAtom;
1632
1646
  }
1633
- /** @reactive */
1634
- get audioTracksToPlay() {
1635
- return (this._state.call.users ?? []).map((user) => user.tracks?.audioEnabled ? user.tracks?.audio : void 0).filter(isNonNullable2).map((track) => this._state.media.pulledAudioTracks[track]?.track).filter(isNonNullable2);
1647
+ /** Derived atom for audioTracksToPlay. */
1648
+ get audioTracksToPlayAtom() {
1649
+ return this._audioTracksToPlayAtom;
1636
1650
  }
1637
- /** @reactive */
1638
- get state() {
1639
- return this._state;
1651
+ /** Returns the full state atom for reactive subscriptions. */
1652
+ get stateAtom() {
1653
+ return this._stateAtom;
1640
1654
  }
1641
- /** @reactive */
1642
- getVideoStream(name) {
1643
- return name ? this._state.media.pulledVideoStreams[name]?.stream : void 0;
1655
+ /** Returns a derived atom for a video stream by name. */
1656
+ videoStreamAtom(name) {
1657
+ return this._videoStreamAtomFamily(name);
1644
1658
  }
1645
- /** @reactive */
1646
- getActivity(key) {
1647
- return this._state.call.activities?.[key];
1659
+ /** Returns a derived atom for an activity by key. */
1660
+ activityAtom(key) {
1661
+ return this._activityAtomFamily(key);
1648
1662
  }
1649
1663
  setRoomId(roomId) {
1650
1664
  this._swarmSynchronizer._setRoomId(roomId);
@@ -1677,13 +1691,13 @@ var CallManager = class extends Resource5 {
1677
1691
  return this._mediaManager.turnScreenshareOff();
1678
1692
  }
1679
1693
  // TODO(burdon): Can this be mocked?
1680
- constructor(_client) {
1681
- super(), this._client = _client;
1694
+ constructor(_client, _registry) {
1695
+ super(), this._client = _client, this._registry = _registry;
1682
1696
  this._client.config.getOrThrow("runtime.services.edge.url");
1683
1697
  const networkService = this._client.services.services.NetworkService;
1684
1698
  invariant5(networkService, "network service not found", {
1685
1699
  F: __dxlog_file6,
1686
- L: 159,
1700
+ L: 180,
1687
1701
  S: this,
1688
1702
  A: [
1689
1703
  "networkService",
@@ -1732,7 +1746,8 @@ var CallManager = class extends Resource5 {
1732
1746
  this._swarmSynchronizer.setJoined(false);
1733
1747
  await this._swarmSynchronizer.leave();
1734
1748
  await this._mediaManager.leave();
1735
- this.roomId && this.left.emit(this.roomId);
1749
+ const roomId = this._registry.get(this._roomIdAtom);
1750
+ roomId && this.left.emit(roomId);
1736
1751
  }
1737
1752
  _onCallStateUpdated(state) {
1738
1753
  const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self.id)?.flatMap((user) => [
@@ -1765,8 +1780,10 @@ var CallManager = class extends Resource5 {
1765
1780
  * Only this method is allowed to change state.
1766
1781
  */
1767
1782
  _updateState() {
1768
- this._state.call = this._swarmSynchronizer._getState();
1769
- this._state.media = this._mediaManager._getState();
1783
+ this._registry.set(this._stateAtom, {
1784
+ call: this._swarmSynchronizer._getState(),
1785
+ media: this._mediaManager._getState()
1786
+ });
1770
1787
  }
1771
1788
  };
1772
1789
  _ts_decorate3([
@@ -1790,4 +1807,4 @@ export {
1790
1807
  MediaManager,
1791
1808
  CallManager
1792
1809
  };
1793
- //# sourceMappingURL=chunk-ZCW3NSDZ.mjs.map
1810
+ //# sourceMappingURL=chunk-ERK254BS.mjs.map