@dxos/plugin-thread 0.8.4-main.c85a9c8dae → 0.8.4-main.d9fc60f731

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 (668) hide show
  1. package/LICENSE +102 -5
  2. package/PLUGIN.mdl +271 -0
  3. package/README.md +1 -1
  4. package/dist/lib/neutral/ChannelArticle-UJHPOUWA.mjs +28 -0
  5. package/dist/lib/neutral/ChannelArticle-UJHPOUWA.mjs.map +7 -0
  6. package/dist/lib/neutral/ChannelChat-LZEDFJVD.mjs +10 -0
  7. package/dist/lib/{browser/ThreadCompanion-2CMLJH76.mjs → neutral/CommentsCompanion-FOUIGCEK.mjs} +59 -55
  8. package/dist/lib/neutral/CommentsCompanion-FOUIGCEK.mjs.map +7 -0
  9. package/dist/lib/neutral/ThreadContainer-QWB6WRMI.mjs +61 -0
  10. package/dist/lib/neutral/ThreadContainer-QWB6WRMI.mjs.map +7 -0
  11. package/dist/lib/neutral/ThreadPlugin.mjs +109 -0
  12. package/dist/lib/neutral/ThreadPlugin.mjs.map +7 -0
  13. package/dist/lib/neutral/ThreadPlugin.node.mjs +40 -0
  14. package/dist/lib/neutral/ThreadPlugin.node.mjs.map +7 -0
  15. package/dist/lib/neutral/ThreadPlugin.workerd.mjs +24 -0
  16. package/dist/lib/neutral/ThreadPlugin.workerd.mjs.map +7 -0
  17. package/dist/lib/neutral/ThreadSettings-5MKTDK3A.mjs +15 -0
  18. package/dist/lib/neutral/ThreadSettings-5MKTDK3A.mjs.map +7 -0
  19. package/dist/lib/neutral/add-message-RDIABSIX.mjs +122 -0
  20. package/dist/lib/neutral/add-message-RDIABSIX.mjs.map +7 -0
  21. package/dist/lib/neutral/agent-runner-RB7N5HLD.mjs +244 -0
  22. package/dist/lib/neutral/agent-runner-RB7N5HLD.mjs.map +7 -0
  23. package/dist/lib/neutral/app-graph-builder-PDLRFYSI.mjs +120 -0
  24. package/dist/lib/neutral/app-graph-builder-PDLRFYSI.mjs.map +7 -0
  25. package/dist/lib/neutral/append-channel-message-TBBQUVMH.mjs +40 -0
  26. package/dist/lib/neutral/append-channel-message-TBBQUVMH.mjs.map +7 -0
  27. package/dist/lib/{browser/blueprint-definition-42M2EJ2Y.mjs → neutral/blueprint-definition-S3EBOH4R.mjs} +4 -6
  28. package/dist/lib/neutral/blueprint-definition-S3EBOH4R.mjs.map +7 -0
  29. package/dist/lib/{browser → neutral}/blueprints/index.mjs +1 -1
  30. package/dist/lib/neutral/capabilities/index.mjs +27 -0
  31. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-35GUWXBB.mjs +48 -0
  33. package/dist/lib/neutral/chunk-35GUWXBB.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-5T5LPLBN.mjs +36 -0
  35. package/dist/lib/neutral/chunk-5T5LPLBN.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-BHEZLLXG.mjs +55 -0
  37. package/dist/lib/neutral/chunk-BHEZLLXG.mjs.map +7 -0
  38. package/dist/lib/{browser/markdown-GRRPCZHJ.mjs → neutral/chunk-HQZWTDJC.mjs} +48 -94
  39. package/dist/lib/neutral/chunk-HQZWTDJC.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-IQBZZAMX.mjs +335 -0
  41. package/dist/lib/neutral/chunk-IQBZZAMX.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-JJETHBAZ.mjs +8 -0
  43. package/dist/lib/neutral/chunk-JJETHBAZ.mjs.map +7 -0
  44. package/dist/lib/{node-esm/chunk-ABUFOZVX.mjs → neutral/chunk-JLY4NVTA.mjs} +12 -7
  45. package/dist/lib/neutral/chunk-JLY4NVTA.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-QFDT33VT.mjs +69 -0
  47. package/dist/lib/neutral/chunk-QFDT33VT.mjs.map +7 -0
  48. package/dist/lib/neutral/components/index.mjs +541 -0
  49. package/dist/lib/neutral/components/index.mjs.map +7 -0
  50. package/dist/lib/neutral/containers/index.mjs +15 -0
  51. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  52. package/dist/lib/neutral/create-VXM6HJMN.mjs +61 -0
  53. package/dist/lib/neutral/create-VXM6HJMN.mjs.map +7 -0
  54. package/dist/lib/neutral/create-channel-FSJOMRHF.mjs +19 -0
  55. package/dist/lib/neutral/create-channel-FSJOMRHF.mjs.map +7 -0
  56. package/dist/lib/neutral/create-object-D5XEG7MQ.mjs +28 -0
  57. package/dist/lib/neutral/create-object-D5XEG7MQ.mjs.map +7 -0
  58. package/dist/lib/neutral/create-proposals-ILYIYJEN.mjs +56 -0
  59. package/dist/lib/neutral/create-proposals-ILYIYJEN.mjs.map +7 -0
  60. package/dist/lib/neutral/delete-6KZERY6K.mjs +57 -0
  61. package/dist/lib/neutral/delete-6KZERY6K.mjs.map +7 -0
  62. package/dist/lib/neutral/delete-message-PATSHW36.mjs +54 -0
  63. package/dist/lib/neutral/delete-message-PATSHW36.mjs.map +7 -0
  64. package/dist/lib/neutral/hooks/index.mjs +10 -0
  65. package/dist/lib/neutral/index.mjs +32 -0
  66. package/dist/lib/neutral/markdown-5UHAAC5Z.mjs +83 -0
  67. package/dist/lib/neutral/markdown-5UHAAC5Z.mjs.map +7 -0
  68. package/dist/lib/neutral/meta.json +1 -0
  69. package/dist/lib/neutral/meta.mjs +10 -0
  70. package/dist/lib/neutral/on-create-space-6NLTBGGD.mjs +23 -0
  71. package/dist/lib/neutral/on-create-space-6NLTBGGD.mjs.map +7 -0
  72. package/dist/lib/neutral/operation-handler-RU6K2S4L.mjs +13 -0
  73. package/dist/lib/neutral/operation-handler-RU6K2S4L.mjs.map +7 -0
  74. package/dist/lib/neutral/operations/index.mjs +8 -0
  75. package/dist/lib/neutral/plugin.mjs +16 -0
  76. package/dist/lib/neutral/plugin.mjs.map +7 -0
  77. package/dist/lib/neutral/react-surface-TUMXARMI.mjs +76 -0
  78. package/dist/lib/neutral/react-surface-TUMXARMI.mjs.map +7 -0
  79. package/dist/lib/neutral/respond-to-thread-ROQA3B6U.mjs +32 -0
  80. package/dist/lib/neutral/respond-to-thread-ROQA3B6U.mjs.map +7 -0
  81. package/dist/lib/neutral/restore-SP4HADCE.mjs +32 -0
  82. package/dist/lib/neutral/restore-SP4HADCE.mjs.map +7 -0
  83. package/dist/lib/neutral/restore-message-TVIC66VL.mjs +33 -0
  84. package/dist/lib/neutral/restore-message-TVIC66VL.mjs.map +7 -0
  85. package/dist/lib/neutral/select-DLHPEKEA.mjs +24 -0
  86. package/dist/lib/neutral/select-DLHPEKEA.mjs.map +7 -0
  87. package/dist/lib/neutral/set-agent-config-7GEYCG7Y.mjs +20 -0
  88. package/dist/lib/neutral/set-agent-config-7GEYCG7Y.mjs.map +7 -0
  89. package/dist/lib/{browser/settings-Y75FG6XR.mjs → neutral/settings-HK4EB6TF.mjs} +6 -11
  90. package/dist/lib/neutral/settings-HK4EB6TF.mjs.map +7 -0
  91. package/dist/lib/{browser/state-OBTMMEUZ.mjs → neutral/state-UU7VEAKV.mjs} +3 -6
  92. package/dist/lib/neutral/state-UU7VEAKV.mjs.map +7 -0
  93. package/dist/lib/neutral/testing/index.mjs +58 -0
  94. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  95. package/dist/lib/neutral/toggle-resolved-GMAD3SZ2.mjs +36 -0
  96. package/dist/lib/neutral/toggle-resolved-GMAD3SZ2.mjs.map +7 -0
  97. package/dist/lib/neutral/translations.mjs +91 -0
  98. package/dist/lib/neutral/translations.mjs.map +7 -0
  99. package/dist/lib/neutral/types/index.mjs +16 -0
  100. package/dist/lib/neutral/undo-mappings-HOKL2L3M.mjs +54 -0
  101. package/dist/lib/neutral/undo-mappings-HOKL2L3M.mjs.map +7 -0
  102. package/dist/types/src/ThreadPlugin.d.ts +1 -0
  103. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  104. package/dist/types/src/ThreadPlugin.node.d.ts +4 -0
  105. package/dist/types/src/ThreadPlugin.node.d.ts.map +1 -0
  106. package/dist/types/src/ThreadPlugin.test.d.ts +2 -0
  107. package/dist/types/src/ThreadPlugin.test.d.ts.map +1 -0
  108. package/dist/types/src/ThreadPlugin.workerd.d.ts +4 -0
  109. package/dist/types/src/ThreadPlugin.workerd.d.ts.map +1 -0
  110. package/dist/types/src/blueprints/thread-blueprint.d.ts +2 -2
  111. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/agent-runner.d.ts +22 -0
  113. package/dist/types/src/capabilities/agent-runner.d.ts.map +1 -0
  114. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/blueprint-definition.d.ts +6 -0
  116. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  118. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/index.d.ts +17 -10
  120. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  121. package/dist/types/src/capabilities/markdown.d.ts.map +1 -0
  122. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  123. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  124. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  125. package/dist/types/src/capabilities/{settings/settings.d.ts → settings.d.ts} +2 -1
  126. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  127. package/dist/types/src/capabilities/{state/state.d.ts → state.d.ts} +1 -1
  128. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  129. package/dist/types/src/capabilities/undo-mappings.d.ts +5 -0
  130. package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -0
  131. package/dist/types/src/components/Chat/Chat.d.ts +51 -0
  132. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -0
  133. package/dist/types/src/components/Chat/index.d.ts +2 -0
  134. package/dist/types/src/components/Chat/index.d.ts.map +1 -0
  135. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts +13 -0
  136. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts.map +1 -0
  137. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts +160 -0
  138. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts.map +1 -0
  139. package/dist/types/src/components/{CommentsThreadContainer.d.ts → CommentsPanel/CommentsThread.d.ts} +3 -3
  140. package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts.map +1 -0
  141. package/dist/types/src/components/CommentsPanel/index.d.ts +3 -0
  142. package/dist/types/src/components/CommentsPanel/index.d.ts.map +1 -0
  143. package/dist/types/src/components/{MessageContainer.d.ts → MessagePanel/MessagePanel.d.ts} +3 -3
  144. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts.map +1 -0
  145. package/dist/types/src/components/MessagePanel/index.d.ts +2 -0
  146. package/dist/types/src/components/MessagePanel/index.d.ts.map +1 -0
  147. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts +6 -0
  148. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts.map +1 -0
  149. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts +161 -0
  150. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts.map +1 -0
  151. package/dist/types/src/components/ThreadSettings/index.d.ts +2 -0
  152. package/dist/types/src/components/ThreadSettings/index.d.ts.map +1 -0
  153. package/dist/types/src/components/index.d.ts +5 -4
  154. package/dist/types/src/components/index.d.ts.map +1 -1
  155. package/dist/types/src/containers/ChannelArticle/ChannelArticle.d.ts +13 -0
  156. package/dist/types/src/containers/ChannelArticle/ChannelArticle.d.ts.map +1 -0
  157. package/dist/types/src/containers/ChannelArticle/ChannelArticle.stories.d.ts +162 -0
  158. package/dist/types/src/containers/ChannelArticle/ChannelArticle.stories.d.ts.map +1 -0
  159. package/dist/types/src/containers/ChannelArticle/index.d.ts +2 -0
  160. package/dist/types/src/containers/ChannelArticle/index.d.ts.map +1 -0
  161. package/dist/types/src/containers/ChannelChat/ChannelChat.d.ts +20 -0
  162. package/dist/types/src/containers/ChannelChat/ChannelChat.d.ts.map +1 -0
  163. package/dist/types/src/containers/ChannelChat/index.d.ts +4 -0
  164. package/dist/types/src/containers/ChannelChat/index.d.ts.map +1 -0
  165. package/dist/types/src/containers/CommentsCompanion/CommentsCompanion.d.ts +11 -0
  166. package/dist/types/src/containers/CommentsCompanion/CommentsCompanion.d.ts.map +1 -0
  167. package/dist/types/src/containers/CommentsCompanion/CommentsCompanion.stories.d.ts +198 -0
  168. package/dist/types/src/containers/CommentsCompanion/CommentsCompanion.stories.d.ts.map +1 -0
  169. package/dist/types/src/containers/CommentsCompanion/index.d.ts +2 -0
  170. package/dist/types/src/containers/CommentsCompanion/index.d.ts.map +1 -0
  171. package/dist/types/src/containers/ThreadContainer/ThreadContainer.d.ts +20 -0
  172. package/dist/types/src/containers/ThreadContainer/ThreadContainer.d.ts.map +1 -0
  173. package/dist/types/src/containers/ThreadContainer/ThreadContainer.stories.d.ts +162 -0
  174. package/dist/types/src/containers/ThreadContainer/ThreadContainer.stories.d.ts.map +1 -0
  175. package/dist/types/src/containers/ThreadContainer/index.d.ts +4 -0
  176. package/dist/types/src/containers/ThreadContainer/index.d.ts.map +1 -0
  177. package/dist/types/src/containers/index.d.ts +4 -6
  178. package/dist/types/src/containers/index.d.ts.map +1 -1
  179. package/dist/types/src/{components/command-extension.d.ts → extensions/command.d.ts} +1 -1
  180. package/dist/types/src/extensions/command.d.ts.map +1 -0
  181. package/dist/types/src/extensions/index.d.ts +1 -0
  182. package/dist/types/src/extensions/index.d.ts.map +1 -1
  183. package/dist/types/src/extensions/threads.d.ts +4 -4
  184. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  185. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  186. package/dist/types/src/hooks/index.d.ts +0 -4
  187. package/dist/types/src/hooks/index.d.ts.map +1 -1
  188. package/dist/types/src/hooks/useStatus.d.ts.map +1 -1
  189. package/dist/types/src/index.d.ts +2 -3
  190. package/dist/types/src/index.d.ts.map +1 -1
  191. package/dist/types/src/meta.d.ts +1 -1
  192. package/dist/types/src/meta.d.ts.map +1 -1
  193. package/dist/types/src/operations/add-message.d.ts +5 -0
  194. package/dist/types/src/operations/add-message.d.ts.map +1 -0
  195. package/dist/types/src/operations/append-channel-message.d.ts +5 -0
  196. package/dist/types/src/operations/append-channel-message.d.ts.map +1 -0
  197. package/dist/types/src/operations/create-channel.d.ts +5 -0
  198. package/dist/types/src/operations/create-channel.d.ts.map +1 -0
  199. package/dist/types/src/operations/create-proposals.d.ts +5 -0
  200. package/dist/types/src/operations/create-proposals.d.ts.map +1 -0
  201. package/dist/types/src/operations/create.d.ts +5 -0
  202. package/dist/types/src/operations/create.d.ts.map +1 -0
  203. package/dist/types/src/operations/delete-message.d.ts +5 -0
  204. package/dist/types/src/operations/delete-message.d.ts.map +1 -0
  205. package/dist/types/src/operations/delete.d.ts +5 -0
  206. package/dist/types/src/operations/delete.d.ts.map +1 -0
  207. package/dist/types/src/operations/index.d.ts +3 -0
  208. package/dist/types/src/operations/index.d.ts.map +1 -0
  209. package/dist/types/src/operations/on-create-space.d.ts +5 -0
  210. package/dist/types/src/operations/on-create-space.d.ts.map +1 -0
  211. package/dist/types/src/operations/respond-to-thread.d.ts +5 -0
  212. package/dist/types/src/operations/respond-to-thread.d.ts.map +1 -0
  213. package/dist/types/src/operations/restore-message.d.ts +5 -0
  214. package/dist/types/src/operations/restore-message.d.ts.map +1 -0
  215. package/dist/types/src/operations/restore.d.ts +5 -0
  216. package/dist/types/src/operations/restore.d.ts.map +1 -0
  217. package/dist/types/src/operations/select.d.ts +5 -0
  218. package/dist/types/src/operations/select.d.ts.map +1 -0
  219. package/dist/types/src/operations/set-agent-config.d.ts +5 -0
  220. package/dist/types/src/operations/set-agent-config.d.ts.map +1 -0
  221. package/dist/types/src/operations/toggle-resolved.d.ts +5 -0
  222. package/dist/types/src/operations/toggle-resolved.d.ts.map +1 -0
  223. package/dist/types/src/plugin.d.ts +4 -0
  224. package/dist/types/src/plugin.d.ts.map +1 -0
  225. package/dist/types/src/should-trigger-agent.d.ts +22 -0
  226. package/dist/types/src/should-trigger-agent.d.ts.map +1 -0
  227. package/dist/types/src/should-trigger-agent.test.d.ts +2 -0
  228. package/dist/types/src/should-trigger-agent.test.d.ts.map +1 -0
  229. package/dist/types/src/{components/testing.d.ts → testing/data.d.ts} +1 -1
  230. package/dist/types/src/testing/data.d.ts.map +1 -0
  231. package/dist/types/src/testing/index.d.ts +1 -1
  232. package/dist/types/src/testing/index.d.ts.map +1 -1
  233. package/dist/types/src/translations.d.ts +140 -142
  234. package/dist/types/src/translations.d.ts.map +1 -1
  235. package/dist/types/src/types/AgentIdentity.d.ts +27 -0
  236. package/dist/types/src/types/AgentIdentity.d.ts.map +1 -0
  237. package/dist/types/src/types/Settings.d.ts +5 -0
  238. package/dist/types/src/types/Settings.d.ts.map +1 -0
  239. package/dist/types/src/types/ThreadCapabilities.d.ts +34 -0
  240. package/dist/types/src/types/ThreadCapabilities.d.ts.map +1 -0
  241. package/dist/types/src/types/ThreadOperation.d.ts +2745 -0
  242. package/dist/types/src/types/ThreadOperation.d.ts.map +1 -0
  243. package/dist/types/src/types/index.d.ts +4 -2
  244. package/dist/types/src/types/index.d.ts.map +1 -1
  245. package/dist/types/src/types/types.d.ts +0 -3303
  246. package/dist/types/src/types/types.d.ts.map +1 -1
  247. package/dist/types/src/util.d.ts +6 -3
  248. package/dist/types/src/util.d.ts.map +1 -1
  249. package/dist/types/tsconfig.tsbuildinfo +1 -1
  250. package/package.json +136 -92
  251. package/src/ThreadPlugin.node.ts +39 -0
  252. package/src/ThreadPlugin.test.ts +37 -0
  253. package/src/ThreadPlugin.tsx +40 -61
  254. package/src/ThreadPlugin.workerd.ts +20 -0
  255. package/src/blueprints/thread-blueprint.ts +5 -9
  256. package/src/capabilities/agent-runner.ts +291 -0
  257. package/src/capabilities/app-graph-builder.ts +143 -0
  258. package/src/capabilities/{blueprint-definition/blueprint-definition.ts → blueprint-definition.ts} +3 -1
  259. package/src/capabilities/create-object.ts +30 -0
  260. package/src/capabilities/index.ts +17 -10
  261. package/src/capabilities/{markdown/markdown.ts → markdown.ts} +16 -12
  262. package/src/capabilities/operation-handler.ts +16 -0
  263. package/src/capabilities/react-surface.tsx +75 -0
  264. package/src/capabilities/{settings/settings.ts → settings.ts} +4 -5
  265. package/src/capabilities/{state/state.ts → state.ts} +1 -1
  266. package/src/capabilities/undo-mappings.ts +46 -0
  267. package/src/components/Chat/Chat.tsx +259 -0
  268. package/src/components/Chat/index.ts +5 -0
  269. package/src/components/{Comments.stories.tsx → CommentsPanel/CommentsPanel.stories.tsx} +17 -17
  270. package/src/components/{CommentsContainer.tsx → CommentsPanel/CommentsPanel.tsx} +11 -11
  271. package/src/components/{CommentsThreadContainer.tsx → CommentsPanel/CommentsThread.tsx} +32 -28
  272. package/src/components/CommentsPanel/index.ts +6 -0
  273. package/src/components/{MessageContainer.tsx → MessagePanel/MessagePanel.tsx} +24 -19
  274. package/src/components/MessagePanel/index.ts +5 -0
  275. package/src/components/ThreadSettings/ThreadSettings.stories.tsx +32 -0
  276. package/src/components/ThreadSettings/ThreadSettings.tsx +19 -0
  277. package/src/components/ThreadSettings/index.ts +5 -0
  278. package/src/components/index.ts +7 -4
  279. package/src/containers/ChannelArticle/ChannelArticle.stories.tsx +105 -0
  280. package/src/containers/ChannelArticle/ChannelArticle.tsx +42 -0
  281. package/src/containers/ChannelArticle/index.ts +5 -0
  282. package/src/containers/ChannelChat/ChannelChat.tsx +75 -0
  283. package/src/containers/ChannelChat/index.ts +8 -0
  284. package/src/containers/CommentsCompanion/CommentsCompanion.stories.tsx +355 -0
  285. package/src/containers/{ThreadCompanion/ThreadCompanion.tsx → CommentsCompanion/CommentsCompanion.tsx} +63 -44
  286. package/src/containers/CommentsCompanion/index.ts +5 -0
  287. package/src/containers/{ChatContainer/ChatContainer.stories.tsx → ThreadContainer/ThreadContainer.stories.tsx} +17 -19
  288. package/src/containers/ThreadContainer/ThreadContainer.tsx +75 -0
  289. package/src/containers/ThreadContainer/index.ts +8 -0
  290. package/src/containers/index.ts +4 -6
  291. package/src/{components/command-extension.ts → extensions/command.ts} +1 -1
  292. package/src/extensions/index.ts +1 -0
  293. package/src/extensions/threads.ts +20 -19
  294. package/src/hooks/analytics.ts +1 -1
  295. package/src/hooks/index.ts +0 -5
  296. package/src/index.ts +4 -4
  297. package/src/meta.ts +35 -9
  298. package/src/operations/add-message.ts +94 -0
  299. package/src/operations/append-channel-message.ts +37 -0
  300. package/src/operations/create-channel.ts +20 -0
  301. package/src/operations/create-proposals.ts +49 -0
  302. package/src/operations/create.ts +63 -0
  303. package/src/operations/delete-message.ts +53 -0
  304. package/src/operations/delete.ts +63 -0
  305. package/src/operations/index.ts +22 -0
  306. package/src/operations/on-create-space.ts +27 -0
  307. package/src/operations/respond-to-thread.ts +32 -0
  308. package/src/operations/restore-message.ts +38 -0
  309. package/src/operations/restore.ts +38 -0
  310. package/src/operations/select.ts +24 -0
  311. package/src/operations/set-agent-config.ts +24 -0
  312. package/src/operations/toggle-resolved.ts +41 -0
  313. package/src/plugin.ts +11 -0
  314. package/src/should-trigger-agent.test.ts +72 -0
  315. package/src/should-trigger-agent.ts +50 -0
  316. package/src/{components/testing.ts → testing/data.ts} +7 -7
  317. package/src/testing/index.ts +1 -1
  318. package/src/translations.ts +73 -76
  319. package/src/types/AgentIdentity.ts +35 -0
  320. package/src/types/Settings.ts +10 -0
  321. package/src/types/ThreadCapabilities.ts +46 -0
  322. package/src/types/ThreadOperation.ts +225 -0
  323. package/src/types/index.ts +5 -2
  324. package/src/types/types.ts +1 -185
  325. package/src/util.ts +37 -5
  326. package/src/vite-env.d.ts +10 -0
  327. package/dist/lib/browser/CallDebugPanel-FGCTY7Q4.mjs +0 -182
  328. package/dist/lib/browser/CallDebugPanel-FGCTY7Q4.mjs.map +0 -7
  329. package/dist/lib/browser/CallSidebar-PJCMNDIF.mjs +0 -33
  330. package/dist/lib/browser/CallSidebar-PJCMNDIF.mjs.map +0 -7
  331. package/dist/lib/browser/ChannelContainer-EPYG4QAC.mjs +0 -15
  332. package/dist/lib/browser/ChatContainer-2243UD2M.mjs +0 -14
  333. package/dist/lib/browser/ThreadCompanion-2CMLJH76.mjs.map +0 -7
  334. package/dist/lib/browser/ThreadSettings-S55YVOGA.mjs +0 -20
  335. package/dist/lib/browser/ThreadSettings-S55YVOGA.mjs.map +0 -7
  336. package/dist/lib/browser/app-graph-builder-5LCAM746.mjs +0 -191
  337. package/dist/lib/browser/app-graph-builder-5LCAM746.mjs.map +0 -7
  338. package/dist/lib/browser/blueprint-definition-42M2EJ2Y.mjs.map +0 -7
  339. package/dist/lib/browser/call-manager-2PRP4QVZ.mjs +0 -27
  340. package/dist/lib/browser/call-manager-2PRP4QVZ.mjs.map +0 -7
  341. package/dist/lib/browser/chunk-CP7E2HRE.mjs +0 -31
  342. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +0 -7
  343. package/dist/lib/browser/chunk-ERK254BS.mjs +0 -1810
  344. package/dist/lib/browser/chunk-ERK254BS.mjs.map +0 -7
  345. package/dist/lib/browser/chunk-G6FJBSXX.mjs +0 -1123
  346. package/dist/lib/browser/chunk-G6FJBSXX.mjs.map +0 -7
  347. package/dist/lib/browser/chunk-HDLDMR54.mjs +0 -184
  348. package/dist/lib/browser/chunk-HDLDMR54.mjs.map +0 -7
  349. package/dist/lib/browser/chunk-ISCHODBV.mjs +0 -106
  350. package/dist/lib/browser/chunk-ISCHODBV.mjs.map +0 -7
  351. package/dist/lib/browser/chunk-LUK4UNFA.mjs +0 -20
  352. package/dist/lib/browser/chunk-LUK4UNFA.mjs.map +0 -7
  353. package/dist/lib/browser/chunk-PDHCY236.mjs +0 -223
  354. package/dist/lib/browser/chunk-PDHCY236.mjs.map +0 -7
  355. package/dist/lib/browser/chunk-PL5LIVP4.mjs +0 -105
  356. package/dist/lib/browser/chunk-PL5LIVP4.mjs.map +0 -7
  357. package/dist/lib/browser/chunk-U32R23JO.mjs +0 -277
  358. package/dist/lib/browser/chunk-U32R23JO.mjs.map +0 -7
  359. package/dist/lib/browser/chunk-UVUCB7QO.mjs +0 -125
  360. package/dist/lib/browser/chunk-UVUCB7QO.mjs.map +0 -7
  361. package/dist/lib/browser/index.mjs +0 -308
  362. package/dist/lib/browser/index.mjs.map +0 -7
  363. package/dist/lib/browser/markdown-GRRPCZHJ.mjs.map +0 -7
  364. package/dist/lib/browser/meta.json +0 -1
  365. package/dist/lib/browser/operation-resolver-EP7FAYEB.mjs +0 -442
  366. package/dist/lib/browser/operation-resolver-EP7FAYEB.mjs.map +0 -7
  367. package/dist/lib/browser/react-root-7UFFPPRD.mjs +0 -26
  368. package/dist/lib/browser/react-root-7UFFPPRD.mjs.map +0 -7
  369. package/dist/lib/browser/react-surface-TIHBSZPD.mjs +0 -113
  370. package/dist/lib/browser/react-surface-TIHBSZPD.mjs.map +0 -7
  371. package/dist/lib/browser/repair-TBU45SBG.mjs +0 -40
  372. package/dist/lib/browser/repair-TBU45SBG.mjs.map +0 -7
  373. package/dist/lib/browser/settings-Y75FG6XR.mjs.map +0 -7
  374. package/dist/lib/browser/state-OBTMMEUZ.mjs.map +0 -7
  375. package/dist/lib/browser/types/index.mjs +0 -15
  376. package/dist/lib/node-esm/CallDebugPanel-CYACANSP.mjs +0 -183
  377. package/dist/lib/node-esm/CallDebugPanel-CYACANSP.mjs.map +0 -7
  378. package/dist/lib/node-esm/CallSidebar-XD7J7EQ6.mjs +0 -34
  379. package/dist/lib/node-esm/CallSidebar-XD7J7EQ6.mjs.map +0 -7
  380. package/dist/lib/node-esm/ChannelContainer-NU4LSLB4.mjs +0 -16
  381. package/dist/lib/node-esm/ChatContainer-FPNIG33R.mjs +0 -15
  382. package/dist/lib/node-esm/ChatContainer-FPNIG33R.mjs.map +0 -7
  383. package/dist/lib/node-esm/ThreadCompanion-TLWTONG6.mjs +0 -205
  384. package/dist/lib/node-esm/ThreadCompanion-TLWTONG6.mjs.map +0 -7
  385. package/dist/lib/node-esm/ThreadSettings-EUH4AGYV.mjs +0 -21
  386. package/dist/lib/node-esm/ThreadSettings-EUH4AGYV.mjs.map +0 -7
  387. package/dist/lib/node-esm/app-graph-builder-VBLHLX75.mjs +0 -192
  388. package/dist/lib/node-esm/app-graph-builder-VBLHLX75.mjs.map +0 -7
  389. package/dist/lib/node-esm/blueprint-definition-PEXTS56K.mjs +0 -18
  390. package/dist/lib/node-esm/blueprint-definition-PEXTS56K.mjs.map +0 -7
  391. package/dist/lib/node-esm/blueprints/index.mjs +0 -9
  392. package/dist/lib/node-esm/call-manager-BLQCEM2F.mjs +0 -28
  393. package/dist/lib/node-esm/call-manager-BLQCEM2F.mjs.map +0 -7
  394. package/dist/lib/node-esm/chunk-6K5ACCGB.mjs +0 -107
  395. package/dist/lib/node-esm/chunk-6K5ACCGB.mjs.map +0 -7
  396. package/dist/lib/node-esm/chunk-7SZBKQUU.mjs +0 -224
  397. package/dist/lib/node-esm/chunk-7SZBKQUU.mjs.map +0 -7
  398. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +0 -7
  399. package/dist/lib/node-esm/chunk-GPPP2MZ3.mjs +0 -22
  400. package/dist/lib/node-esm/chunk-GPPP2MZ3.mjs.map +0 -7
  401. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  402. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
  403. package/dist/lib/node-esm/chunk-IQUV7DR6.mjs +0 -1124
  404. package/dist/lib/node-esm/chunk-IQUV7DR6.mjs.map +0 -7
  405. package/dist/lib/node-esm/chunk-QP3KQOPQ.mjs +0 -1811
  406. package/dist/lib/node-esm/chunk-QP3KQOPQ.mjs.map +0 -7
  407. package/dist/lib/node-esm/chunk-QYAVWNVM.mjs +0 -278
  408. package/dist/lib/node-esm/chunk-QYAVWNVM.mjs.map +0 -7
  409. package/dist/lib/node-esm/chunk-V2GXQ2UB.mjs +0 -126
  410. package/dist/lib/node-esm/chunk-V2GXQ2UB.mjs.map +0 -7
  411. package/dist/lib/node-esm/chunk-VBI32FGI.mjs +0 -108
  412. package/dist/lib/node-esm/chunk-VBI32FGI.mjs.map +0 -7
  413. package/dist/lib/node-esm/chunk-YN2Y7GPW.mjs +0 -185
  414. package/dist/lib/node-esm/chunk-YN2Y7GPW.mjs.map +0 -7
  415. package/dist/lib/node-esm/index.mjs +0 -309
  416. package/dist/lib/node-esm/index.mjs.map +0 -7
  417. package/dist/lib/node-esm/markdown-WHWUESF7.mjs +0 -211
  418. package/dist/lib/node-esm/markdown-WHWUESF7.mjs.map +0 -7
  419. package/dist/lib/node-esm/meta.json +0 -1
  420. package/dist/lib/node-esm/operation-resolver-R7QJW3TW.mjs +0 -443
  421. package/dist/lib/node-esm/operation-resolver-R7QJW3TW.mjs.map +0 -7
  422. package/dist/lib/node-esm/react-root-D7CWS5XP.mjs +0 -27
  423. package/dist/lib/node-esm/react-root-D7CWS5XP.mjs.map +0 -7
  424. package/dist/lib/node-esm/react-surface-WWZFSK5Y.mjs +0 -114
  425. package/dist/lib/node-esm/react-surface-WWZFSK5Y.mjs.map +0 -7
  426. package/dist/lib/node-esm/repair-7JEKRNR3.mjs +0 -41
  427. package/dist/lib/node-esm/repair-7JEKRNR3.mjs.map +0 -7
  428. package/dist/lib/node-esm/settings-W4JN2YKJ.mjs +0 -36
  429. package/dist/lib/node-esm/settings-W4JN2YKJ.mjs.map +0 -7
  430. package/dist/lib/node-esm/state-7UWCSIWQ.mjs +0 -26
  431. package/dist/lib/node-esm/state-7UWCSIWQ.mjs.map +0 -7
  432. package/dist/lib/node-esm/types/index.mjs +0 -16
  433. package/dist/types/src/calls/call-manager.d.ts +0 -87
  434. package/dist/types/src/calls/call-manager.d.ts.map +0 -1
  435. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +0 -66
  436. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +0 -1
  437. package/dist/types/src/calls/index.d.ts +0 -7
  438. package/dist/types/src/calls/index.d.ts.map +0 -1
  439. package/dist/types/src/calls/media-manager.d.ts +0 -60
  440. package/dist/types/src/calls/media-manager.d.ts.map +0 -1
  441. package/dist/types/src/calls/speaking-monitor.d.ts +0 -24
  442. package/dist/types/src/calls/speaking-monitor.d.ts.map +0 -1
  443. package/dist/types/src/calls/types.d.ts +0 -45
  444. package/dist/types/src/calls/types.d.ts.map +0 -1
  445. package/dist/types/src/calls/util/audio.d.ts +0 -6
  446. package/dist/types/src/calls/util/audio.d.ts.map +0 -1
  447. package/dist/types/src/calls/util/calls-service.d.ts +0 -77
  448. package/dist/types/src/calls/util/calls-service.d.ts.map +0 -1
  449. package/dist/types/src/calls/util/history-cache.d.ts +0 -11
  450. package/dist/types/src/calls/util/history-cache.d.ts.map +0 -1
  451. package/dist/types/src/calls/util/index.d.ts +0 -5
  452. package/dist/types/src/calls/util/index.d.ts.map +0 -1
  453. package/dist/types/src/calls/util/media.d.ts +0 -6
  454. package/dist/types/src/calls/util/media.d.ts.map +0 -1
  455. package/dist/types/src/calls/util/stub-media-streams.d.ts +0 -18
  456. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +0 -1
  457. package/dist/types/src/calls/util/task-scheduling.d.ts +0 -17
  458. package/dist/types/src/calls/util/task-scheduling.d.ts.map +0 -1
  459. package/dist/types/src/calls-service.stories.d.ts +0 -23
  460. package/dist/types/src/calls-service.stories.d.ts.map +0 -1
  461. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
  462. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
  463. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
  464. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +0 -6
  465. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +0 -1
  466. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +0 -3
  467. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +0 -1
  468. package/dist/types/src/capabilities/call-manager/call-manager.d.ts +0 -6
  469. package/dist/types/src/capabilities/call-manager/call-manager.d.ts.map +0 -1
  470. package/dist/types/src/capabilities/call-manager/index.d.ts +0 -3
  471. package/dist/types/src/capabilities/call-manager/index.d.ts.map +0 -1
  472. package/dist/types/src/capabilities/markdown/index.d.ts +0 -3
  473. package/dist/types/src/capabilities/markdown/index.d.ts.map +0 -1
  474. package/dist/types/src/capabilities/markdown/markdown.d.ts.map +0 -1
  475. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  476. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  477. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  478. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  479. package/dist/types/src/capabilities/react-root/index.d.ts +0 -6
  480. package/dist/types/src/capabilities/react-root/index.d.ts.map +0 -1
  481. package/dist/types/src/capabilities/react-root/react-root.d.ts +0 -9
  482. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +0 -1
  483. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  484. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  485. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  486. package/dist/types/src/capabilities/repair/index.d.ts +0 -3
  487. package/dist/types/src/capabilities/repair/index.d.ts.map +0 -1
  488. package/dist/types/src/capabilities/repair/repair.d.ts +0 -6
  489. package/dist/types/src/capabilities/repair/repair.d.ts.map +0 -1
  490. package/dist/types/src/capabilities/settings/index.d.ts +0 -3
  491. package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
  492. package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
  493. package/dist/types/src/capabilities/state/index.d.ts +0 -3
  494. package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
  495. package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
  496. package/dist/types/src/components/Call/Call.d.ts +0 -17
  497. package/dist/types/src/components/Call/Call.d.ts.map +0 -1
  498. package/dist/types/src/components/Call/Toolbar.d.ts +0 -16
  499. package/dist/types/src/components/Call/Toolbar.d.ts.map +0 -1
  500. package/dist/types/src/components/Call/index.d.ts +0 -3
  501. package/dist/types/src/components/Call/index.d.ts.map +0 -1
  502. package/dist/types/src/components/Comments.stories.d.ts +0 -162
  503. package/dist/types/src/components/Comments.stories.d.ts.map +0 -1
  504. package/dist/types/src/components/CommentsContainer.d.ts +0 -13
  505. package/dist/types/src/components/CommentsContainer.d.ts.map +0 -1
  506. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +0 -1
  507. package/dist/types/src/components/Lobby/Lobby.d.ts +0 -15
  508. package/dist/types/src/components/Lobby/Lobby.d.ts.map +0 -1
  509. package/dist/types/src/components/Lobby/index.d.ts +0 -2
  510. package/dist/types/src/components/Lobby/index.d.ts.map +0 -1
  511. package/dist/types/src/components/Media/AudioStream.d.ts +0 -6
  512. package/dist/types/src/components/Media/AudioStream.d.ts.map +0 -1
  513. package/dist/types/src/components/Media/VideoObject.d.ts +0 -15
  514. package/dist/types/src/components/Media/VideoObject.d.ts.map +0 -1
  515. package/dist/types/src/components/Media/VideoObject.stories.d.ts +0 -22
  516. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +0 -1
  517. package/dist/types/src/components/Media/index.d.ts +0 -3
  518. package/dist/types/src/components/Media/index.d.ts.map +0 -1
  519. package/dist/types/src/components/MessageContainer.d.ts.map +0 -1
  520. package/dist/types/src/components/Participant/Participant.d.ts +0 -6
  521. package/dist/types/src/components/Participant/Participant.d.ts.map +0 -1
  522. package/dist/types/src/components/Participant/ParticipantGrid.d.ts +0 -11
  523. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +0 -1
  524. package/dist/types/src/components/Participant/index.d.ts +0 -3
  525. package/dist/types/src/components/Participant/index.d.ts.map +0 -1
  526. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts +0 -12
  527. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts.map +0 -1
  528. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +0 -166
  529. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +0 -1
  530. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts +0 -32
  531. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts.map +0 -1
  532. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +0 -180
  533. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +0 -1
  534. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts +0 -21
  535. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +0 -1
  536. package/dist/types/src/components/ResponsiveGrid/index.d.ts +0 -4
  537. package/dist/types/src/components/ResponsiveGrid/index.d.ts.map +0 -1
  538. package/dist/types/src/components/command-extension.d.ts.map +0 -1
  539. package/dist/types/src/components/testing.d.ts.map +0 -1
  540. package/dist/types/src/containers/CallDebugPanel/CallDebugPanel.d.ts +0 -15
  541. package/dist/types/src/containers/CallDebugPanel/CallDebugPanel.d.ts.map +0 -1
  542. package/dist/types/src/containers/CallDebugPanel/index.d.ts +0 -3
  543. package/dist/types/src/containers/CallDebugPanel/index.d.ts.map +0 -1
  544. package/dist/types/src/containers/CallSidebar/CallSidebar.d.ts +0 -3
  545. package/dist/types/src/containers/CallSidebar/CallSidebar.d.ts.map +0 -1
  546. package/dist/types/src/containers/CallSidebar/index.d.ts +0 -3
  547. package/dist/types/src/containers/CallSidebar/index.d.ts.map +0 -1
  548. package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts +0 -12
  549. package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts.map +0 -1
  550. package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts +0 -164
  551. package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts.map +0 -1
  552. package/dist/types/src/containers/ChannelContainer/index.d.ts +0 -3
  553. package/dist/types/src/containers/ChannelContainer/index.d.ts.map +0 -1
  554. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts +0 -17
  555. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +0 -1
  556. package/dist/types/src/containers/ChatContainer/ChatContainer.stories.d.ts +0 -164
  557. package/dist/types/src/containers/ChatContainer/ChatContainer.stories.d.ts.map +0 -1
  558. package/dist/types/src/containers/ChatContainer/index.d.ts +0 -3
  559. package/dist/types/src/containers/ChatContainer/index.d.ts.map +0 -1
  560. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts +0 -5
  561. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts.map +0 -1
  562. package/dist/types/src/containers/ThreadCompanion/index.d.ts +0 -3
  563. package/dist/types/src/containers/ThreadCompanion/index.d.ts.map +0 -1
  564. package/dist/types/src/containers/ThreadSettings/ThreadSettings.d.ts +0 -8
  565. package/dist/types/src/containers/ThreadSettings/ThreadSettings.d.ts.map +0 -1
  566. package/dist/types/src/containers/ThreadSettings/index.d.ts +0 -3
  567. package/dist/types/src/containers/ThreadSettings/index.d.ts.map +0 -1
  568. package/dist/types/src/functions/create-proposals.d.ts +0 -13
  569. package/dist/types/src/functions/create-proposals.d.ts.map +0 -1
  570. package/dist/types/src/functions/index.d.ts +0 -14
  571. package/dist/types/src/functions/index.d.ts.map +0 -1
  572. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +0 -2
  573. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +0 -1
  574. package/dist/types/src/hooks/useDebugMode.d.ts +0 -2
  575. package/dist/types/src/hooks/useDebugMode.d.ts.map +0 -1
  576. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts +0 -2
  577. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts.map +0 -1
  578. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +0 -3
  579. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +0 -1
  580. package/dist/types/src/testing/stories.d.ts +0 -3
  581. package/dist/types/src/testing/stories.d.ts.map +0 -1
  582. package/dist/types/src/types/Channel.d.ts +0 -711
  583. package/dist/types/src/types/Channel.d.ts.map +0 -1
  584. package/dist/types/src/types/capabilities.d.ts +0 -23
  585. package/dist/types/src/types/capabilities.d.ts.map +0 -1
  586. package/src/calls/call-manager.ts +0 -270
  587. package/src/calls/call-swarm-synchronizer.ts +0 -350
  588. package/src/calls/index.ts +0 -10
  589. package/src/calls/media-manager.ts +0 -378
  590. package/src/calls/speaking-monitor.ts +0 -85
  591. package/src/calls/types.ts +0 -74
  592. package/src/calls/util/audio.ts +0 -58
  593. package/src/calls/util/calls-service.ts +0 -581
  594. package/src/calls/util/history-cache.ts +0 -27
  595. package/src/calls/util/index.ts +0 -8
  596. package/src/calls/util/media.ts +0 -52
  597. package/src/calls/util/stub-media-streams.ts +0 -127
  598. package/src/calls/util/task-scheduling.ts +0 -92
  599. package/src/calls-service.stories.tsx +0 -229
  600. package/src/capabilities/app-graph-builder/app-graph-builder.ts +0 -202
  601. package/src/capabilities/app-graph-builder/index.ts +0 -7
  602. package/src/capabilities/blueprint-definition/index.ts +0 -7
  603. package/src/capabilities/call-manager/call-manager.ts +0 -26
  604. package/src/capabilities/call-manager/index.ts +0 -7
  605. package/src/capabilities/markdown/index.ts +0 -7
  606. package/src/capabilities/operation-resolver/index.ts +0 -7
  607. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -399
  608. package/src/capabilities/react-root/index.ts +0 -7
  609. package/src/capabilities/react-root/react-root.tsx +0 -20
  610. package/src/capabilities/react-surface/index.ts +0 -7
  611. package/src/capabilities/react-surface/react-surface.tsx +0 -98
  612. package/src/capabilities/repair/index.ts +0 -7
  613. package/src/capabilities/repair/repair.ts +0 -55
  614. package/src/capabilities/settings/index.ts +0 -7
  615. package/src/capabilities/state/index.ts +0 -7
  616. package/src/components/Call/Call.tsx +0 -93
  617. package/src/components/Call/Toolbar.tsx +0 -189
  618. package/src/components/Call/index.ts +0 -6
  619. package/src/components/Lobby/Lobby.tsx +0 -121
  620. package/src/components/Lobby/index.ts +0 -5
  621. package/src/components/Media/AudioStream.tsx +0 -67
  622. package/src/components/Media/VideoObject.stories.tsx +0 -60
  623. package/src/components/Media/VideoObject.tsx +0 -58
  624. package/src/components/Media/index.ts +0 -6
  625. package/src/components/Participant/Participant.tsx +0 -76
  626. package/src/components/Participant/ParticipantGrid.tsx +0 -89
  627. package/src/components/Participant/index.ts +0 -6
  628. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +0 -54
  629. package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +0 -31
  630. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +0 -158
  631. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +0 -341
  632. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +0 -134
  633. package/src/components/ResponsiveGrid/index.ts +0 -7
  634. package/src/containers/CallDebugPanel/CallDebugPanel.tsx +0 -172
  635. package/src/containers/CallDebugPanel/index.ts +0 -7
  636. package/src/containers/CallSidebar/CallSidebar.tsx +0 -17
  637. package/src/containers/CallSidebar/index.ts +0 -7
  638. package/src/containers/ChannelContainer/ChannelContainer.stories.tsx +0 -60
  639. package/src/containers/ChannelContainer/ChannelContainer.tsx +0 -217
  640. package/src/containers/ChannelContainer/index.ts +0 -7
  641. package/src/containers/ChatContainer/ChatContainer.tsx +0 -149
  642. package/src/containers/ChatContainer/index.ts +0 -7
  643. package/src/containers/ThreadCompanion/index.ts +0 -7
  644. package/src/containers/ThreadSettings/ThreadSettings.tsx +0 -22
  645. package/src/containers/ThreadSettings/index.ts +0 -7
  646. package/src/functions/create-proposals.ts +0 -57
  647. package/src/functions/index.ts +0 -9
  648. package/src/hooks/useBlackCanvasStreamTrack.tsx +0 -27
  649. package/src/hooks/useDebugMode.ts +0 -25
  650. package/src/hooks/useInaudibleAudioStreamTrack.tsx +0 -27
  651. package/src/hooks/useVideoStreamTrack.tsx +0 -36
  652. package/src/testing/stories.ts +0 -56
  653. package/src/types/Channel.ts +0 -30
  654. package/src/types/capabilities.ts +0 -34
  655. package/src/typings/peermetrics-webrtc-stats.d.ts +0 -46
  656. package/src/typings.d.ts +0 -8
  657. /package/dist/lib/{browser/ChannelContainer-EPYG4QAC.mjs.map → neutral/ChannelChat-LZEDFJVD.mjs.map} +0 -0
  658. /package/dist/lib/{browser → neutral}/blueprints/index.mjs.map +0 -0
  659. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  660. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs.map +0 -0
  661. /package/dist/lib/{browser/types → neutral/hooks}/index.mjs.map +0 -0
  662. /package/dist/lib/{node-esm/blueprints → neutral}/index.mjs.map +0 -0
  663. /package/dist/lib/{browser/ChatContainer-2243UD2M.mjs.map → neutral/meta.mjs.map} +0 -0
  664. /package/dist/lib/{node-esm/types → neutral/operations}/index.mjs.map +0 -0
  665. /package/dist/lib/{node-esm/ChannelContainer-NU4LSLB4.mjs.map → neutral/types/index.mjs.map} +0 -0
  666. /package/dist/types/src/capabilities/{app-graph-builder/app-graph-builder.d.ts → app-graph-builder.d.ts} +0 -0
  667. /package/dist/types/src/capabilities/{markdown/markdown.d.ts → markdown.d.ts} +0 -0
  668. /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
@@ -8,15 +8,14 @@ import { Capability } from '@dxos/app-framework';
8
8
  import { AppCapabilities } from '@dxos/app-toolkit';
9
9
  import { createKvsStore } from '@dxos/effect';
10
10
 
11
- import { meta } from '../../meta';
12
- import { ThreadSettingsSchema } from '../../types';
13
- import { ThreadCapabilities } from '../../types/capabilities';
11
+ import { meta } from '#meta';
12
+ import { Settings, ThreadCapabilities } from '#types';
14
13
 
15
14
  export default Capability.makeModule(() =>
16
15
  Effect.sync(() => {
17
16
  const settingsAtom = createKvsStore({
18
17
  key: meta.id,
19
- schema: ThreadSettingsSchema,
18
+ schema: Settings.Settings,
20
19
  defaultValue: () => ({}),
21
20
  });
22
21
 
@@ -26,7 +25,7 @@ export default Capability.makeModule(() =>
26
25
  // Contribute to common settings for UI discovery.
27
26
  Capability.contributes(AppCapabilities.Settings, {
28
27
  prefix: meta.id,
29
- schema: ThreadSettingsSchema,
28
+ schema: Settings.Settings,
30
29
  atom: settingsAtom,
31
30
  }),
32
31
  ];
@@ -7,7 +7,7 @@ import * as Effect from 'effect/Effect';
7
7
 
8
8
  import { Capability } from '@dxos/app-framework';
9
9
 
10
- import { ThreadCapabilities, type ThreadState, type ViewStore } from '../../types';
10
+ import { ThreadCapabilities, type ThreadState, type ViewStore } from '#types';
11
11
 
12
12
  export default Capability.makeModule(
13
13
  Effect.fnUntraced(function* () {
@@ -0,0 +1,46 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { Capabilities, Capability, UndoMapping } from '@dxos/app-framework';
8
+
9
+ import { meta } from '#meta';
10
+ import { ThreadOperation } from '#types';
11
+
12
+ export default Capability.makeModule(
13
+ Effect.fnUntraced(function* () {
14
+ return Capability.contributes(Capabilities.UndoMapping, [
15
+ UndoMapping.make({
16
+ operation: ThreadOperation.Delete,
17
+ inverse: ThreadOperation.Restore,
18
+ deriveContext: (_input, output) => {
19
+ if (!output.thread || !output.anchor) {
20
+ return;
21
+ }
22
+ return {
23
+ thread: output.thread,
24
+ anchor: output.anchor,
25
+ };
26
+ },
27
+ message: ['thread-deleted.label', { ns: meta.id }],
28
+ }),
29
+ UndoMapping.make({
30
+ operation: ThreadOperation.DeleteMessage,
31
+ inverse: ThreadOperation.RestoreMessage,
32
+ deriveContext: (input, output) => {
33
+ if (!output.message || output.messageIndex === undefined) {
34
+ return;
35
+ }
36
+ return {
37
+ anchor: input.anchor,
38
+ message: output.message,
39
+ messageIndex: output.messageIndex,
40
+ };
41
+ },
42
+ message: ['message-deleted.label', { ns: meta.id }],
43
+ }),
44
+ ]);
45
+ }),
46
+ );
@@ -0,0 +1,259 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import React, { type RefObject, useLayoutEffect, useMemo, useRef, useState } from 'react';
6
+
7
+ import { type SpaceMember } from '@dxos/react-client/echo';
8
+ import { type Identity } from '@dxos/react-client/halo';
9
+ import { ScrollArea, type ThemedClassName, useThemeContext, useTranslation } from '@dxos/react-ui';
10
+ import { composable, composableProps } from '@dxos/react-ui';
11
+ import {
12
+ type MessageMetadata,
13
+ MessageTextbox,
14
+ Thread as ThreadComponent,
15
+ type ThreadRootProps,
16
+ threadLayout,
17
+ } from '@dxos/react-ui-thread';
18
+ import { type Message } from '@dxos/types';
19
+ import { createBasicExtensions, createThemeExtensions, listener, type Extension } from '@dxos/ui-editor';
20
+ import { mx } from '@dxos/ui-theme';
21
+ import { isNonNullable } from '@dxos/util';
22
+
23
+ import { meta } from '#meta';
24
+
25
+ import { command } from '../../extensions';
26
+ import { getMessageMetadata } from '../../util';
27
+ import { MessagePanel } from '../MessagePanel';
28
+
29
+ export type ChatProps = ThemedClassName<
30
+ {
31
+ /** Stable id used for the underlying thread root and message metadata. */
32
+ id: string;
33
+ /** Identity used to attribute outgoing messages in the textbox metadata. */
34
+ identity?: Identity;
35
+ /** Space members for rendering sender names/avatars on incoming messages. */
36
+ members: SpaceMember[];
37
+ /** Messages to render in order. */
38
+ messages: readonly Message.Message[];
39
+ /** Activity indicator (e.g. processing) shown beneath the textbox. */
40
+ activity?: boolean;
41
+ /**
42
+ * Called with the user's textbox content when they press send.
43
+ * Returning `true` signals the message was accepted; the textbox is then cleared.
44
+ */
45
+ onSend: (text: string) => boolean;
46
+ autoFocusTextbox?: boolean;
47
+ /**
48
+ * Where the composer sits relative to the messages.
49
+ * - `'top'` (default) — composer follows the messages at intrinsic height,
50
+ * suitable for inline comment threads.
51
+ * - `'bottom'` — composer pinned to the bottom of the panel, messages
52
+ * scrolling above it. Suitable for full-panel multi-party chat.
53
+ */
54
+ orientation?: ChatOrientation;
55
+ /**
56
+ * When true, hide the composer textbox and activity indicator. Used for
57
+ * channels whose source-of-truth lives elsewhere (e.g. externally-synced
58
+ * Slack/Discord channels keyed by a foreign id) — sending isn't meaningful
59
+ * because there is no local-write path back to the source.
60
+ */
61
+ readOnly?: boolean;
62
+ } & Pick<ThreadRootProps, 'current'>
63
+ >;
64
+
65
+ export type ChatOrientation = 'top' | 'bottom';
66
+
67
+ /**
68
+ * Pure chat UI: scrollable message list + composer textbox + activity indicator.
69
+ * Owns its own UI state (textbox content, scroll position, editor extensions) but
70
+ * does not load data or invoke operations — the caller passes messages and an
71
+ * `onSend` callback. Used by both `ThreadContainer` (AutoMerge `Thread`) and
72
+ * `ChannelArticle`'s feed-backed channel chat.
73
+ */
74
+ export const Chat = composable<HTMLDivElement, ChatProps>(
75
+ (
76
+ {
77
+ id,
78
+ identity,
79
+ members,
80
+ messages,
81
+ activity,
82
+ onSend,
83
+ autoFocusTextbox,
84
+ current,
85
+ orientation = 'top',
86
+ readOnly,
87
+ ...props
88
+ },
89
+ forwardedRef,
90
+ ) => {
91
+ const { t } = useTranslation(meta.id);
92
+ const { themeMode } = useThemeContext();
93
+
94
+ const scrollRef = useRef<HTMLDivElement | null>(null);
95
+ const sentinelRef = useRef<HTMLDivElement | null>(null);
96
+ const [autoFocus, setAutoFocus] = useState(autoFocusTextbox);
97
+
98
+ // Force the editor to remount after a successful send so its content resets.
99
+ const [_count, _setCount] = useState(0);
100
+
101
+ const textboxMetadata = getMessageMetadata(id, identity);
102
+ const messageRef = useRef('');
103
+ const extensions = useMemo(
104
+ () => [
105
+ createBasicExtensions({ placeholder: t('message.placeholder') }),
106
+ createThemeExtensions({ themeMode }),
107
+ listener({ onChange: ({ text }) => (messageRef.current = text) }),
108
+ command,
109
+ ],
110
+ [themeMode, _count],
111
+ );
112
+
113
+ const scrollToEnd = (behavior: ScrollBehavior) =>
114
+ setTimeout(() => sentinelRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);
115
+
116
+ useLayoutEffect(() => {
117
+ scrollToEnd('instant');
118
+ }, []);
119
+ // NOTE: Auto-scroll on new messages is intentionally not implemented here. Smooth-scroll
120
+ // animations were causing ResizeObserver feedback loops with CodeMirror/ScrollArea. The
121
+ // proper fix is "scroll only if user is already at the bottom" — deferred to a follow-up.
122
+
123
+ const handleSend = () => {
124
+ const text = messageRef.current;
125
+ if (!text?.length) {
126
+ return false;
127
+ }
128
+
129
+ const accepted = onSend(text);
130
+ if (!accepted) {
131
+ return false;
132
+ }
133
+
134
+ messageRef.current = '';
135
+ setAutoFocus(true);
136
+ scrollToEnd('smooth');
137
+ _setCount((count) => count + 1);
138
+ return true;
139
+ };
140
+
141
+ const filteredMessages = messages.filter(isNonNullable);
142
+ const renderState: ChatRenderState = {
143
+ messages: filteredMessages,
144
+ members,
145
+ activity,
146
+ extensions,
147
+ autoFocus,
148
+ handleSend,
149
+ textboxMetadata,
150
+ scrollRef,
151
+ sentinelRef,
152
+ readOnly,
153
+ };
154
+
155
+ return orientation === 'bottom' ? (
156
+ <ChannelLayout
157
+ {...composableProps(props, { classNames: 'flex flex-col h-full min-h-0' })}
158
+ id={id}
159
+ ref={forwardedRef}
160
+ state={renderState}
161
+ />
162
+ ) : (
163
+ <ThreadLayout
164
+ {...composableProps(props, { classNames: 'dx-container grid-rows-[1fr_min-content_min-content]' })}
165
+ id={id}
166
+ current={current}
167
+ ref={forwardedRef}
168
+ state={renderState}
169
+ />
170
+ );
171
+ },
172
+ );
173
+
174
+ //
175
+ // Internal layout helpers — share state via the ChatRenderState bag.
176
+ //
177
+
178
+ type ChatRenderState = {
179
+ messages: Message.Message[];
180
+ members: SpaceMember[];
181
+ activity?: boolean;
182
+ extensions: Extension[];
183
+ autoFocus?: boolean;
184
+ handleSend: () => boolean;
185
+ textboxMetadata: MessageMetadata;
186
+ scrollRef: RefObject<HTMLDivElement | null>;
187
+ sentinelRef: RefObject<HTMLDivElement | null>;
188
+ readOnly?: boolean;
189
+ };
190
+
191
+ type LayoutProps = React.HTMLAttributes<HTMLDivElement> & {
192
+ id: string;
193
+ state: ChatRenderState;
194
+ };
195
+
196
+ /** Thread layout — composer follows messages at intrinsic height. */
197
+ const ThreadLayout = React.forwardRef<HTMLDivElement, LayoutProps & Pick<ThreadRootProps, 'current'>>(
198
+ ({ id, current, state, ...props }, ref) => {
199
+ const { t } = useTranslation(meta.id);
200
+ const { messages, members, activity, extensions, autoFocus, handleSend, textboxMetadata, sentinelRef, readOnly } =
201
+ state;
202
+ return (
203
+ <ThreadComponent.Root {...props} id={id} current={current} ref={ref}>
204
+ <ScrollArea.Root classNames='col-span-2' orientation='vertical'>
205
+ <ScrollArea.Viewport ref={sentinelRef}>
206
+ <div className={mx(threadLayout, 'place-self-end')}>
207
+ {messages.map((message) => (
208
+ <MessagePanel key={message.id} message={message} members={members} />
209
+ ))}
210
+ </div>
211
+ </ScrollArea.Viewport>
212
+ </ScrollArea.Root>
213
+ {!readOnly && (
214
+ <>
215
+ <MessageTextbox extensions={extensions} autoFocus={autoFocus} onSend={handleSend} {...textboxMetadata} />
216
+ <ThreadComponent.Status activity={activity}>{t('activity.message')}</ThreadComponent.Status>
217
+ </>
218
+ )}
219
+ </ThreadComponent.Root>
220
+ );
221
+ },
222
+ );
223
+
224
+ /** Channel layout — composer pinned to the bottom, messages scroll above it. */
225
+ const ChannelLayout = React.forwardRef<HTMLDivElement, LayoutProps>(({ id, state, ...props }, ref) => {
226
+ const { t } = useTranslation(meta.id);
227
+ const {
228
+ messages,
229
+ members,
230
+ activity,
231
+ extensions,
232
+ autoFocus,
233
+ handleSend,
234
+ textboxMetadata,
235
+ scrollRef,
236
+ sentinelRef,
237
+ readOnly,
238
+ } = state;
239
+ return (
240
+ <div {...props} id={id} ref={ref}>
241
+ <div ref={scrollRef} className='flex-1 min-h-0 overflow-y-auto'>
242
+ {messages.map((message) => (
243
+ <div key={message.id} className='grid grid-cols-[var(--dx-rail-size)_1fr] w-full'>
244
+ <MessagePanel message={message} members={members} />
245
+ </div>
246
+ ))}
247
+ <div ref={sentinelRef} />
248
+ </div>
249
+ {!readOnly && (
250
+ <>
251
+ <div className='shrink-0 grid grid-cols-[var(--dx-rail-size)_1fr]'>
252
+ <MessageTextbox extensions={extensions} autoFocus={autoFocus} onSend={handleSend} {...textboxMetadata} />
253
+ </div>
254
+ <div className='shrink-0 px-2 pb-1 text-xs text-description'>{activity ? t('activity.message') : null}</div>
255
+ </>
256
+ )}
257
+ </div>
258
+ );
259
+ });
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export * from './Chat';
@@ -6,29 +6,30 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import * as Effect from 'effect/Effect';
7
7
  import React from 'react';
8
8
 
9
- import { OperationPlugin, RuntimePlugin } from '@dxos/app-framework';
9
+ import { ProcessManagerPlugin } from '@dxos/app-framework';
10
10
  import { withPluginManager } from '@dxos/app-framework/testing';
11
11
  import { Obj, Query, Relation } from '@dxos/echo';
12
12
  import { TestSchema } from '@dxos/echo/testing';
13
- import { ClientPlugin } from '@dxos/plugin-client';
14
- import { faker } from '@dxos/random';
15
- import { useDatabase, useQuery } from '@dxos/react-client/echo';
13
+ import { ClientPlugin } from '@dxos/plugin-client/testing';
14
+ import { initializeIdentity } from '@dxos/plugin-client/testing';
15
+ import { random } from '@dxos/random';
16
+ import { useQuery, useSpaces } from '@dxos/react-client/echo';
16
17
  import { useIdentity } from '@dxos/react-client/halo';
17
18
  import { useAsyncEffect } from '@dxos/react-ui';
18
- import { withLayout, withTheme } from '@dxos/react-ui/testing';
19
- import { render } from '@dxos/storybook-utils';
19
+ import { withLayout, withTheme, Loading } from '@dxos/react-ui/testing';
20
20
  import { AnchoredTo, Message, Thread } from '@dxos/types';
21
21
 
22
- import { translations } from '../translations';
22
+ import { translations } from '#translations';
23
23
 
24
- import { CommentsContainer } from './CommentsContainer';
25
- import { createCommentThread, createProposalThread } from './testing';
24
+ import { createCommentThread, createProposalThread } from '../../testing/data';
25
+ import { CommentsPanel } from './CommentsPanel';
26
26
 
27
- faker.seed(1);
27
+ random.seed(1);
28
28
 
29
29
  const DefaultStory = () => {
30
30
  const identity = useIdentity();
31
- const db = useDatabase();
31
+ const [space] = useSpaces();
32
+ const db = space?.db;
32
33
  const anchors = useQuery(db, Query.type(AnchoredTo.AnchoredTo));
33
34
 
34
35
  useAsyncEffect(async () => {
@@ -54,15 +55,15 @@ const DefaultStory = () => {
54
55
  }, [identity, db]);
55
56
 
56
57
  if (!identity || !db || !anchors) {
57
- return null;
58
+ return <Loading data={{ identity: !!identity, db: !!db, anchors: !!anchors }} />;
58
59
  }
59
60
 
60
- return <CommentsContainer anchors={anchors} onThreadDelete={console.log} onAcceptProposal={console.log} />;
61
+ return <CommentsPanel anchors={anchors} onThreadDelete={console.log} onAcceptProposal={console.log} />;
61
62
  };
62
63
 
63
64
  const meta = {
64
65
  title: 'plugins/plugin-thread/components/Comments',
65
- render: render(DefaultStory),
66
+ render: DefaultStory,
66
67
  decorators: [
67
68
  withTheme(),
68
69
  withLayout({ layout: 'column' }),
@@ -70,13 +71,12 @@ const meta = {
70
71
  // Currently this is required due to useOnEditAnalytics.
71
72
  withPluginManager({
72
73
  plugins: [
73
- OperationPlugin(),
74
- RuntimePlugin(),
74
+ ProcessManagerPlugin(),
75
75
  ClientPlugin({
76
76
  types: [Message.Message, Thread.Thread, AnchoredTo.AnchoredTo],
77
77
  onClientInitialized: ({ client }) =>
78
78
  Effect.gen(function* () {
79
- yield* Effect.promise(() => client.halo.createIdentity());
79
+ yield* initializeIdentity(client);
80
80
  }),
81
81
  }),
82
82
  ],
@@ -8,11 +8,11 @@ import { Obj, Relation } from '@dxos/echo';
8
8
  import { Icon, Message, Trans, useTranslation } from '@dxos/react-ui';
9
9
  import { type AnchoredTo, type Thread } from '@dxos/types';
10
10
 
11
- import { meta } from '../meta';
11
+ import { meta } from '#meta';
12
12
 
13
- import { CommentsThreadContainer, type CommentsThreadContainerProps } from './CommentsThreadContainer';
13
+ import { CommentsThread, type CommentsThreadProps } from './CommentsThread';
14
14
 
15
- export type CommentsContainerProps = Omit<CommentsThreadContainerProps, 'anchor' | 'current'> & {
15
+ export type CommentsPanelProps = Omit<CommentsThreadProps, 'anchor' | 'current'> & {
16
16
  anchors: AnchoredTo.AnchoredTo[];
17
17
  currentId?: string;
18
18
  showResolvedThreads?: boolean;
@@ -21,7 +21,7 @@ export type CommentsContainerProps = Omit<CommentsThreadContainerProps, 'anchor'
21
21
  /**
22
22
  * Root container for collection of comment threads.
23
23
  */
24
- export const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }: CommentsContainerProps) => {
24
+ export const CommentsPanel = ({ anchors, currentId, showResolvedThreads, ...props }: CommentsPanelProps) => {
25
25
  const { t } = useTranslation(meta.id);
26
26
 
27
27
  // TODO(wittjosiah): There seems to be a race between thread and anchor being deleted.
@@ -41,19 +41,19 @@ export const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...
41
41
 
42
42
  if (filteredAnchors.length === 0) {
43
43
  return (
44
- <div role='none' className='p-form-padding'>
44
+ <div className='p-form-padding'>
45
45
  <Message.Root>
46
- <Message.Title>
46
+ <Message.Content>
47
47
  <Trans
48
48
  {...{
49
49
  t,
50
- i18nKey: 'no comments message',
50
+ i18nKey: 'no-comments.message',
51
51
  components: {
52
- commentIcon: <Icon icon='ph--chat-text--regular' size={4} classNames='w-block' />,
52
+ commentIcon: <Icon icon='ph--chat-text--regular' size={4} classNames='dx-icon-inline' />,
53
53
  },
54
54
  }}
55
55
  />
56
- </Message.Title>
56
+ </Message.Content>
57
57
  </Message.Root>
58
58
  </div>
59
59
  );
@@ -63,8 +63,8 @@ export const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...
63
63
  <div>
64
64
  {filteredAnchors.map((anchor) => {
65
65
  const thread = Relation.getSource(anchor) as Thread.Thread;
66
- const threadId = Obj.getDXN(thread).toString();
67
- return <CommentsThreadContainer key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;
66
+ const threadId = Obj.getURI(thread);
67
+ return <CommentsThread key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;
68
68
  })}
69
69
  </div>
70
70
  );
@@ -19,14 +19,14 @@ import { type AnchoredTo, type Thread } from '@dxos/types';
19
19
  import { createBasicExtensions, createThemeExtensions, listener } from '@dxos/ui-editor';
20
20
  import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/ui-theme';
21
21
 
22
- import { useStatus } from '../hooks';
23
- import { meta } from '../meta';
24
- import { getMessageMetadata } from '../util';
22
+ import { useStatus } from '#hooks';
23
+ import { meta } from '#meta';
25
24
 
26
- import { command } from './command-extension';
27
- import { MessageContainer, buttonClassNames, buttonGroupClassNames } from './MessageContainer';
25
+ import { command } from '../../extensions/command';
26
+ import { getMessageMetadata } from '../../util';
27
+ import { MessagePanel, buttonClassNames, buttonGroupClassNames } from '../MessagePanel';
28
28
 
29
- export type CommentsThreadContainerProps = {
29
+ export type CommentsThreadProps = {
30
30
  anchor: AnchoredTo.AnchoredTo;
31
31
  onAttend?: (anchor: AnchoredTo.AnchoredTo) => void;
32
32
  onComment?: (anchor: AnchoredTo.AnchoredTo, message: string) => void;
@@ -36,7 +36,7 @@ export type CommentsThreadContainerProps = {
36
36
  onAcceptProposal?: (anchor: AnchoredTo.AnchoredTo, messageId: string) => void;
37
37
  } & Pick<ThreadRootProps, 'current'>;
38
38
 
39
- export const CommentsThreadContainer = ({
39
+ export const CommentsThread = ({
40
40
  anchor,
41
41
  current,
42
42
  onAttend,
@@ -45,7 +45,7 @@ export const CommentsThreadContainer = ({
45
45
  onMessageDelete,
46
46
  onThreadDelete,
47
47
  onAcceptProposal,
48
- }: CommentsThreadContainerProps) => {
48
+ }: CommentsThreadProps) => {
49
49
  const { themeMode } = useThemeContext();
50
50
  const { t } = useTranslation(meta.id);
51
51
  const identity = useIdentity()!;
@@ -54,17 +54,17 @@ export const CommentsThreadContainer = ({
54
54
  const detached = !anchor.anchor;
55
55
  const thread = Relation.getSource(anchor) as Thread.Thread;
56
56
  const [messages] = useObject(thread, 'messages');
57
- const activity = useStatus(space, Obj.getDXN(thread).toString());
57
+ const activity = useStatus(space, Obj.getURI(thread));
58
58
  const threadScrollRef = useRef<HTMLDivElement | null>(null);
59
59
 
60
- const textboxMetadata = getMessageMetadata(Obj.getDXN(thread).toString(), identity);
60
+ const textboxMetadata = getMessageMetadata(Obj.getURI(thread), identity);
61
61
 
62
62
  // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.
63
63
  const [state, setState] = useState({});
64
64
  const messageRef = useRef('');
65
65
  const extensions = useMemo(
66
66
  () => [
67
- createBasicExtensions({ placeholder: t('message placeholder') }),
67
+ createBasicExtensions({ placeholder: t('message.placeholder') }),
68
68
  createThemeExtensions({ themeMode }),
69
69
  listener({ onChange: ({ text }) => (messageRef.current = text) }),
70
70
  command,
@@ -82,7 +82,7 @@ export const CommentsThreadContainer = ({
82
82
  const handleThreadDelete = useCallback(() => onThreadDelete?.(anchor), [onThreadDelete, anchor]);
83
83
  const handleAcceptProposal = useCallback((id: string) => onAcceptProposal?.(anchor, id), [onAcceptProposal, anchor]);
84
84
 
85
- const handleComment: MessageTextboxProps['onSend'] = useCallback(() => {
85
+ const handleComment = useCallback<NonNullable<MessageTextboxProps['onSend']>>(() => {
86
86
  if (!messageRef.current) {
87
87
  return false;
88
88
  }
@@ -97,14 +97,13 @@ export const CommentsThreadContainer = ({
97
97
 
98
98
  return (
99
99
  <ThreadComponent.Root
100
- id={Obj.getDXN(thread).toString()}
100
+ id={Obj.getURI(thread)}
101
101
  classNames='pt-2 border-b border-subdued-separator last:border-none'
102
102
  current={current}
103
103
  onClickCapture={handleAttend}
104
104
  onFocusCapture={handleAttend}
105
105
  >
106
106
  <div
107
- role='none'
108
107
  className={mx(
109
108
  'col-span-2 grid grid-cols-[var(--dx-rail-size)_1fr_min-content]',
110
109
  hoverableControls,
@@ -112,21 +111,21 @@ export const CommentsThreadContainer = ({
112
111
  )}
113
112
  >
114
113
  {detached ? (
115
- <Tooltip.Trigger asChild content={t('detached thread label')} side='top'>
114
+ <Tooltip.Trigger asChild content={t('detached-thread.label')} side='top'>
116
115
  <ThreadComponent.Header detached>{thread.name}</ThreadComponent.Header>
117
116
  </Tooltip.Trigger>
118
117
  ) : (
119
118
  <ThreadComponent.Header>{thread.name}</ThreadComponent.Header>
120
119
  )}
121
- <div role='none' className={buttonGroupClassNames}>
122
- {thread.status === 'staged' && <Tag palette='neutral'>{t('draft button')}</Tag>}
120
+ <div className={buttonGroupClassNames}>
121
+ {thread.status === 'staged' && <Tag palette='neutral'>{t('draft.button')}</Tag>}
123
122
  {onResolve && !(thread?.status === 'staged') && (
124
123
  <IconButton
125
124
  data-testid='thread.resolve'
126
125
  variant='ghost'
127
126
  icon={thread?.status === 'resolved' ? 'ph--check--fill' : 'ph--check--regular'}
128
127
  iconOnly
129
- label={t('resolve thread label')}
128
+ label={t('resolve-thread.label')}
130
129
  classNames={[buttonClassNames, thread?.status !== 'resolved' && hoverableControlItem]}
131
130
  onClick={handleResolve}
132
131
  />
@@ -137,7 +136,7 @@ export const CommentsThreadContainer = ({
137
136
  variant='ghost'
138
137
  icon='ph--x--regular'
139
138
  iconOnly
140
- label={t('delete thread label')}
139
+ label={t('delete-thread.label')}
141
140
  classNames={[buttonClassNames, hoverableControlItem]}
142
141
  onClick={handleThreadDelete}
143
142
  />
@@ -146,8 +145,8 @@ export const CommentsThreadContainer = ({
146
145
  </div>
147
146
 
148
147
  {messages?.map((ref) => (
149
- <MessageContainer
150
- key={ref.dxn.toString()}
148
+ <MessagePanel
149
+ key={ref.uri}
151
150
  editable
152
151
  message={ref}
153
152
  members={members}
@@ -157,16 +156,21 @@ export const CommentsThreadContainer = ({
157
156
  ))}
158
157
 
159
158
  {/*
160
- TODO(wittjosiah): Can't autofocus this generally.
161
- There can be multiple threads with inputs and they can't all be focused.
162
- Also, it steals focus from documents when first rendered.
163
- Need to find a way to autofocus in one scenario only: when a new thread is created.
159
+ Autofocus only newly-created (draft) threads. Once the first message is
160
+ posted the thread transitions from 'staged' → 'active' and stops stealing
161
+ focus, satisfying the "one scenario only" constraint flagged in the
162
+ previous TODO (multiple active threads no longer fight for focus).
164
163
  */}
165
- <MessageTextbox extensions={extensions} onSend={handleComment} {...textboxMetadata} />
164
+ <MessageTextbox
165
+ autoFocus={thread.status === 'staged'}
166
+ extensions={extensions}
167
+ onSend={handleComment}
168
+ {...textboxMetadata}
169
+ />
166
170
 
167
- <ThreadComponent.Status activity={activity}>{t('activity message')}</ThreadComponent.Status>
171
+ <ThreadComponent.Status activity={activity}>{t('activity.message')}</ThreadComponent.Status>
168
172
 
169
- <div role='none' className='h-px -mt-px' ref={threadScrollRef} />
173
+ <div className='h-px -mt-px' ref={threadScrollRef} />
170
174
  </ThreadComponent.Root>
171
175
  );
172
176
  };
@@ -0,0 +1,6 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ export * from './CommentsPanel';
6
+ export * from './CommentsThread';