@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
@@ -1,378 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { DeferredTask, Event, sleep, synchronized } from '@dxos/async';
6
- import { type Context, Resource, cancelWithContext } from '@dxos/context';
7
- import { invariant } from '@dxos/invariant';
8
- import { log } from '@dxos/log';
9
-
10
- import { SpeakingMonitor } from './speaking-monitor';
11
- import { type EncodedTrackName, TrackNameCodec, type TrackObject } from './types';
12
- import {
13
- type CallsServiceConfig,
14
- CallsServicePeer,
15
- createBlackCanvasStreamTrack,
16
- createInaudibleAudioStreamTrack,
17
- getScreenshare,
18
- getUserMediaTrack,
19
- } from './util';
20
-
21
- export type MediaState = {
22
- audioDeviceId?: string;
23
- audioEnabled?: boolean;
24
- audioTrack?: MediaStreamTrack;
25
-
26
- videoDeviceId?: string;
27
- videoEnabled?: boolean;
28
- videoTrack?: MediaStreamTrack;
29
- videoStream?: MediaStream;
30
-
31
- screenshareEnabled?: boolean;
32
- screenshareTrack?: MediaStreamTrack;
33
- screenshareVideoStream?: MediaStream;
34
-
35
- pushedVideoTrack?: TrackObject;
36
- pushedAudioTrack?: TrackObject;
37
- pushedScreenshareTrack?: TrackObject;
38
- peer?: CallsServicePeer;
39
-
40
- pulledAudioTracks: Record<EncodedTrackName, { track: MediaStreamTrack; ctx: Context }>;
41
- /**
42
- * Includes video feeds and screenshare feeds of other participants.
43
- */
44
- pulledVideoStreams: Record<EncodedTrackName, { stream: MediaStream; ctx: Context }>;
45
- };
46
-
47
- // TOOD(burdon): Hard coded.
48
- const VIDEO_WIDTH = 1280;
49
- const VIDEO_HEIGHT = 720;
50
- const MAX_WEB_CAM_FRAMERATE = 24;
51
- const MAX_WEB_CAM_BITRATE = 120_0000;
52
- const RETRY_INTERVAL = 100;
53
-
54
- export type MediaManagerProps = {
55
- serviceConfig: CallsServiceConfig;
56
- };
57
-
58
- const USE_INAUDIBLE_AUDIO = true;
59
-
60
- export class MediaManager extends Resource {
61
- public readonly stateUpdated = new Event<MediaState>();
62
-
63
- private readonly _state: MediaState = {
64
- pulledVideoStreams: {},
65
- pulledAudioTracks: {},
66
- };
67
-
68
- private _speakingMonitor?: SpeakingMonitor = undefined;
69
- private _trackToReconcile: EncodedTrackName[] = [];
70
- private _blackCanvasStreamTrack?: MediaStreamTrack = undefined;
71
- private _inaudibleAudioStreamTrack?: MediaStreamTrack = undefined;
72
- private _pushTracksTask?: DeferredTask = undefined;
73
- private _pullTracksTask?: DeferredTask = undefined;
74
-
75
- get isSpeaking() {
76
- return this._speakingMonitor?.isSpeaking;
77
- }
78
-
79
- /**
80
- * @internal
81
- */
82
- _getState(): MediaState {
83
- return this._state;
84
- }
85
-
86
- protected override async _open(): Promise<void> {
87
- this._blackCanvasStreamTrack = await createBlackCanvasStreamTrack({
88
- ctx: this._ctx,
89
- width: VIDEO_WIDTH,
90
- height: VIDEO_HEIGHT,
91
- });
92
-
93
- this._state.videoTrack = this._blackCanvasStreamTrack;
94
- this._state.videoStream = new MediaStream();
95
- this._state.videoStream.addTrack(this._state.videoTrack);
96
-
97
- if (USE_INAUDIBLE_AUDIO) {
98
- this._inaudibleAudioStreamTrack = await createInaudibleAudioStreamTrack({ ctx: this._ctx });
99
- this._state.audioTrack = this._inaudibleAudioStreamTrack;
100
- }
101
-
102
- this._pushTracksTask = new DeferredTask(this._ctx, async () => {
103
- await this._pushTracks();
104
- });
105
- this._pullTracksTask = new DeferredTask(this._ctx, async () => {
106
- await this._reconcilePulledMedia();
107
- });
108
- }
109
-
110
- protected override async _close(): Promise<void> {
111
- void this._speakingMonitor?.close();
112
- this._state.videoTrack && this._state.videoStream?.removeTrack(this._state.videoTrack);
113
- this._state.audioTrack?.stop();
114
- this._state.videoTrack?.stop();
115
- this._state.screenshareTrack?.stop();
116
- this._pushTracksTask = undefined;
117
- this._pullTracksTask = undefined;
118
- }
119
-
120
- @synchronized
121
- async join(serviceConfig: CallsServiceConfig): Promise<void> {
122
- this._state.peer = new CallsServicePeer(serviceConfig);
123
- await this._state.peer!.open();
124
- this._pushTracksTask!.schedule();
125
- }
126
-
127
- @synchronized
128
- async leave(): Promise<void> {
129
- await Promise.all(Object.values(this._state.pulledAudioTracks).map(({ ctx }) => ctx.dispose()));
130
- await Promise.all(Object.values(this._state.pulledVideoStreams).map(({ ctx }) => ctx.dispose()));
131
- this._trackToReconcile = [];
132
- await this._state.peer?.close();
133
- this._state.peer = undefined;
134
- this._state.pushedVideoTrack = undefined;
135
- this._state.pushedAudioTrack = undefined;
136
- this._state.pushedScreenshareTrack = undefined;
137
- this._state.pulledAudioTracks = {};
138
- this._state.pulledVideoStreams = {};
139
- }
140
-
141
- async turnVideoOn(): Promise<void> {
142
- this._state.videoStream!.removeTrack(this._state.videoTrack!);
143
- this._state.videoTrack = await getUserMediaTrack('videoinput', { width: VIDEO_WIDTH, height: VIDEO_HEIGHT });
144
- this._state.videoStream!.addTrack(this._state.videoTrack);
145
-
146
- this._state.videoEnabled = true;
147
- this.stateUpdated.emit(this._state);
148
- this._pushTracksTask!.schedule();
149
- }
150
-
151
- async turnVideoOff(): Promise<void> {
152
- if (this._state.videoTrack !== this._blackCanvasStreamTrack) {
153
- this._state.videoStream!.removeTrack(this._state.videoTrack!);
154
- this._state.videoTrack?.stop();
155
- this._state.videoTrack = this._blackCanvasStreamTrack;
156
- this._state.videoStream!.addTrack(this._state.videoTrack!);
157
- }
158
-
159
- this._state.videoEnabled = false;
160
- this.stateUpdated.emit(this._state);
161
- this._pushTracksTask!.schedule();
162
- }
163
-
164
- // TODO(mykola): Change to `setAudioEnabled(enabled: boolean)`.
165
- async turnAudioOn(): Promise<void> {
166
- void this._speakingMonitor?.close();
167
- this._state.audioEnabled = true;
168
- this._state.audioTrack = await getUserMediaTrack('audioinput', {
169
- echoCancellation: true,
170
- noiseSuppression: true,
171
- autoGainControl: true,
172
- sampleRate: 16_000,
173
- });
174
- this.stateUpdated.emit(this._state);
175
- this._pushTracksTask!.schedule();
176
- this._speakingMonitor = new SpeakingMonitor(this._state.audioTrack!);
177
- this._speakingMonitor.speakingChanged.on(this._ctx, () => this.stateUpdated.emit(this._state));
178
- void this._speakingMonitor.open();
179
- }
180
-
181
- async turnAudioOff(): Promise<void> {
182
- void this._speakingMonitor?.close();
183
- this._speakingMonitor = undefined;
184
- this._state.audioEnabled = false;
185
- if (USE_INAUDIBLE_AUDIO && this._state.audioTrack !== this._inaudibleAudioStreamTrack) {
186
- this._state.audioTrack?.stop();
187
- this._state.audioTrack = this._inaudibleAudioStreamTrack;
188
- } else {
189
- this._state.audioTrack?.stop();
190
- this._state.audioTrack = undefined;
191
- }
192
- this.stateUpdated.emit(this._state);
193
- this._pushTracksTask!.schedule();
194
- }
195
-
196
- async turnScreenshareOn(): Promise<void> {
197
- const ms = await getScreenshare({ contentHint: 'text' });
198
- this._state.screenshareVideoStream = ms;
199
- this._state.screenshareTrack = ms.getVideoTracks()[0];
200
- this._state.screenshareEnabled = true;
201
- this.stateUpdated.emit(this._state);
202
- this._pushTracksTask!.schedule();
203
- }
204
-
205
- async turnScreenshareOff(): Promise<void> {
206
- this._state.screenshareEnabled = false;
207
- this._state.screenshareTrack?.stop();
208
- this._state.screenshareTrack = undefined;
209
- this.stateUpdated.emit(this._state);
210
- this._pushTracksTask!.schedule();
211
- }
212
-
213
- /**
214
- * @internal
215
- */
216
- _schedulePullTracks(tracks?: EncodedTrackName[]): void {
217
- if (
218
- !tracks ||
219
- (this._trackToReconcile.every((name) => tracks.includes(name)) && this._trackToReconcile.length === tracks.length)
220
- ) {
221
- return;
222
- }
223
-
224
- this._trackToReconcile = tracks;
225
- this._pullTracksTask!.schedule();
226
- }
227
-
228
- private async _reconcilePulledMedia(): Promise<void> {
229
- log('reconciling tracks');
230
- // TODO(mykola): Currently cloudflare fails if you try to pull track immediately after pushing it.
231
- // Add retry logic, remove sleep.
232
- // Wait for cloudflare to process the track.
233
- await cancelWithContext(this._ctx, sleep(800));
234
- const trackNames = this._trackToReconcile;
235
- const tracksToPull = trackNames.filter(
236
- (name) => !this._state.pulledAudioTracks[name] && !this._state.pulledVideoStreams[name],
237
- );
238
-
239
- const audioTracksToClose = Object.entries(this._state.pulledAudioTracks).filter(
240
- ([key]) => !trackNames.some((name) => name === key),
241
- );
242
-
243
- const videoStreamsToClose = Object.entries(this._state.pulledVideoStreams).filter(
244
- ([key]) => !trackNames.some((name) => name === key),
245
- );
246
-
247
- log('reconciling tracks', {
248
- trackNames,
249
- tracksToPull,
250
- videoStreamsToClose,
251
- audioTracksToClose,
252
- currentAudioTracks: Object.keys(this._state.pulledAudioTracks),
253
- currentVideoStreams: Object.keys(this._state.pulledVideoStreams),
254
- });
255
-
256
- // Pull new tracks.
257
- const pullResults = await Promise.all(tracksToPull.map((name) => this._pullTrack(name)));
258
-
259
- // Close old tracks.
260
- await Promise.all([...audioTracksToClose, ...videoStreamsToClose].map(([_, { ctx }]) => ctx.dispose()));
261
-
262
- log('reconciled tracks', {
263
- currentAudioTracks: Object.keys(this._state.pulledAudioTracks),
264
- currentVideoStreams: Object.keys(this._state.pulledVideoStreams),
265
- });
266
-
267
- this.stateUpdated.emit(this._state);
268
- if (pullResults.some(({ shouldRetry }) => shouldRetry)) {
269
- await cancelWithContext(this._ctx, sleep(RETRY_INTERVAL));
270
- log.info('retrying pull tracks', { tracksToPull });
271
- invariant(this._pullTracksTask);
272
- this._pullTracksTask.schedule();
273
- }
274
- }
275
-
276
- private async _pushTracks(): Promise<void> {
277
- if (!this._state.peer?.isOpen) {
278
- return;
279
- }
280
-
281
- let updated = false;
282
- const [pushVideoResult, pushAudioResult, pushScreenshareResult] = await Promise.all([
283
- this._maybePushTrack(this._state.videoTrack, this._state.pushedVideoTrack, [
284
- { maxFramerate: MAX_WEB_CAM_FRAMERATE, maxBitrate: MAX_WEB_CAM_BITRATE },
285
- ]),
286
- this._maybePushTrack(this._state.audioTrack, this._state.pushedAudioTrack, [{ networkPriority: 'high' }]),
287
- this._maybePushTrack(this._state.screenshareTrack, this._state.pushedScreenshareTrack),
288
- ]);
289
-
290
- if (pushVideoResult.track !== this._state.pushedVideoTrack) {
291
- this._state.pushedVideoTrack = pushVideoResult.track;
292
- updated = true;
293
- }
294
- if (pushAudioResult.track !== this._state.pushedAudioTrack) {
295
- this._state.pushedAudioTrack = pushAudioResult.track;
296
- updated = true;
297
- }
298
- if (pushScreenshareResult.track !== this._state.pushedScreenshareTrack) {
299
- this._state.pushedScreenshareTrack = pushScreenshareResult.track;
300
- updated = true;
301
- }
302
-
303
- const shouldRetry = pushVideoResult.shouldRetry || pushAudioResult.shouldRetry || pushScreenshareResult.shouldRetry;
304
- if (updated) {
305
- this.stateUpdated.emit(this._state);
306
- }
307
-
308
- if (shouldRetry) {
309
- await cancelWithContext(this._ctx, sleep(RETRY_INTERVAL));
310
- log.info('retrying push tracks', { pushVideoResult, pushAudioResult, pushScreenshareResult });
311
- invariant(this._pushTracksTask);
312
- this._pushTracksTask.schedule();
313
- }
314
- }
315
-
316
- private async _pullTrack(name: EncodedTrackName): Promise<{ shouldRetry: boolean }> {
317
- const ctx = this._ctx.derive();
318
- try {
319
- const trackData = TrackNameCodec.decode(name);
320
- // We need to set mid here to `undefined`, because mid is peer specific.
321
- const track = await this._state.peer!.pullTrack({ trackData: { ...trackData, mid: undefined }, ctx });
322
- if (track?.readyState === 'ended') {
323
- throw new Error('Pulled track ended immediately');
324
- }
325
-
326
- switch (track?.kind) {
327
- case 'audio': {
328
- this._state.pulledAudioTracks[name] = { track, ctx };
329
- ctx.onDispose(() => delete this._state.pulledAudioTracks[name]);
330
- return { shouldRetry: false };
331
- }
332
- case 'video': {
333
- const mediaStream = new MediaStream();
334
- mediaStream.addTrack(track);
335
- this._state.pulledVideoStreams[name] = { stream: mediaStream, ctx };
336
- ctx.onDispose(() => {
337
- mediaStream.removeTrack(track);
338
- track.stop();
339
- delete this._state.pulledVideoStreams[name];
340
- });
341
- return { shouldRetry: false };
342
- }
343
- default:
344
- throw new Error(`Invalid track kind: ${track?.kind}`);
345
- }
346
- } catch (err) {
347
- log.info('failed to pull track', { err, name });
348
- void ctx.dispose();
349
- return { shouldRetry: true };
350
- }
351
- }
352
-
353
- private async _maybePushTrack(
354
- track?: MediaStreamTrack,
355
- previousTrack?: TrackObject,
356
- encodings?: RTCRtpEncodingParameters[],
357
- ): Promise<{ track?: TrackObject; shouldRetry?: boolean }> {
358
- if (!track && !previousTrack) {
359
- return { track: undefined };
360
- }
361
-
362
- const ctx = this._ctx.derive();
363
- try {
364
- return {
365
- track: await this._state.peer!.pushTrack({
366
- ctx,
367
- track: track ?? null,
368
- previousTrack,
369
- encodings,
370
- }),
371
- };
372
- } catch (err) {
373
- log.info('failed to push track', { err, track, previousTrack, encodings });
374
- void ctx.dispose();
375
- return { shouldRetry: true };
376
- }
377
- }
378
- }
@@ -1,85 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { DeferredTask, Event, sleep } from '@dxos/async';
6
- import { Resource } from '@dxos/context';
7
-
8
- import { monitorAudioLevel } from './util';
9
-
10
- const NOT_SPEAKING_AFTER = 500; // [ms]
11
- const START_SPEAKING_THRESHOLD = 0.05;
12
- const CONTINUE_SPEAKING_THRESHOLD = 0.02;
13
- const MIN_EVENT_INTERVAL = 100; // [ms]
14
-
15
- export class SpeakingMonitor extends Resource {
16
- /**
17
- * Event that is emitted when the user starts or stops speaking.
18
- * It is debounced to prevent rapid state changes.
19
- */
20
- public readonly speakingChanged = new Event<boolean>();
21
-
22
- /**
23
- * Real state of the user speaking.
24
- */
25
- private _isSpeaking = false;
26
- private _lastEventTime = 0;
27
- private _deferredUpdate?: DeferredTask | undefined;
28
-
29
- constructor(private readonly _mediaStreamTrack: MediaStreamTrack) {
30
- super();
31
- }
32
-
33
- get isSpeaking(): boolean {
34
- return this._isSpeaking;
35
- }
36
-
37
- protected override async _open(): Promise<void> {
38
- this._deferredUpdate = new DeferredTask(this._ctx, async () => this._emitSpeakingChanged());
39
-
40
- let timeout: NodeJS.Timeout | undefined;
41
- const cleanup = monitorAudioLevel({
42
- mediaStreamTrack: this._mediaStreamTrack,
43
- onMeasure: (vol) => {
44
- // Once the user has been determined to be speaking, we want
45
- // to lower the threshold because speech patterns don't always
46
- // kick up above 0.05.
47
- const audioLevelAboveThreshold =
48
- vol > (this._isSpeaking ? CONTINUE_SPEAKING_THRESHOLD : START_SPEAKING_THRESHOLD);
49
- if (audioLevelAboveThreshold) {
50
- // User is still speaking, clear timeout & reset.
51
- clearTimeout(timeout);
52
- timeout = undefined;
53
- if (!this._isSpeaking) {
54
- this._isSpeaking = true;
55
- this._deferredUpdate?.schedule();
56
- }
57
- } else if (timeout === undefined) {
58
- // User is not speaking and timeout is not set.
59
- timeout = setTimeout(() => {
60
- this._isSpeaking = false;
61
- timeout = undefined;
62
- this._deferredUpdate?.schedule();
63
- }, NOT_SPEAKING_AFTER);
64
- }
65
- },
66
- });
67
- this._ctx.onDispose(() => {
68
- cleanup();
69
- clearTimeout(timeout);
70
- });
71
- }
72
-
73
- /**
74
- * Emits the speaking changed event with debouncing based on timing.
75
- */
76
- private async _emitSpeakingChanged(): Promise<void> {
77
- const timeSinceLastEvent = Date.now() - this._lastEventTime;
78
- const timeToNextEvent = MIN_EVENT_INTERVAL - timeSinceLastEvent;
79
- if (timeToNextEvent > 0) {
80
- await sleep(timeToNextEvent);
81
- }
82
- this._lastEventTime = Date.now();
83
- this.speakingChanged.emit(this._isSpeaking);
84
- }
85
- }
@@ -1,74 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { invariant } from '@dxos/invariant';
6
- import { buf } from '@dxos/protocols/buf';
7
- import {
8
- type ActivitySchema,
9
- type UserState as UserStateProto,
10
- UserStateSchema,
11
- } from '@dxos/protocols/buf/dxos/edge/calls_pb';
12
-
13
- /**
14
- * Endpoint to the calls service.
15
- */
16
- export const CALLS_URL = 'https://calls-service.dxos.workers.dev';
17
-
18
- export type UserState = buf.MessageInitShape<typeof UserStateSchema>;
19
-
20
- export type ActivityState = buf.MessageInitShape<typeof ActivitySchema>;
21
-
22
- export const codec = {
23
- encode: (message: UserState): Uint8Array => {
24
- return buf.toBinary(UserStateSchema, buf.create(UserStateSchema, message));
25
- },
26
- decode: (message: Uint8Array): UserStateProto => {
27
- return buf.fromBinary(UserStateSchema, message);
28
- },
29
- };
30
-
31
- export type TrackObject = {
32
- location?: 'local' | 'remote';
33
- trackName?: string;
34
- sessionId?: string;
35
- mid?: string | null;
36
- };
37
-
38
- export type SessionDescription = {
39
- type: 'offer' | 'answer';
40
- sdp: string;
41
- };
42
-
43
- export interface ErrorResponse {
44
- errorCode?: string;
45
- errorDescription?: string;
46
- }
47
-
48
- export interface SessionResponse extends ErrorResponse {
49
- sessionId: string;
50
- sessionDescription: SessionDescription;
51
- }
52
-
53
- export interface TracksResponse extends ErrorResponse {
54
- sessionDescription: SessionDescription;
55
- requiresImmediateRenegotiation: boolean;
56
- tracks?: (TrackObject & ErrorResponse)[];
57
- }
58
-
59
- export interface RenegotiationResponse extends ErrorResponse {}
60
-
61
- export type EncodedTrackName = string & { __brand: 'EncodedTrackName' };
62
-
63
- export const TrackNameCodec = {
64
- encode: (trackData: TrackObject): EncodedTrackName => {
65
- invariant(trackData.sessionId);
66
- invariant(trackData.trackName);
67
- invariant(trackData.mid);
68
- return (trackData.sessionId + '/' + trackData.trackName + '/' + trackData.mid) as EncodedTrackName;
69
- },
70
- decode: (name: EncodedTrackName): TrackObject => {
71
- const [sessionId, trackName, mid] = name.split('/');
72
- return { sessionId, trackName, location: 'remote', mid };
73
- },
74
- };
@@ -1,58 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- export const monitorAudioLevel = ({
6
- mediaStreamTrack,
7
- intervalMs = 1000 / 10, // 12 fps.
8
- onMeasure,
9
- }: {
10
- mediaStreamTrack: MediaStreamTrack;
11
- intervalMs?: number;
12
- onMeasure: (value: number) => void;
13
- }) => {
14
- let timeout = -1;
15
- let interval = -1;
16
- const audioContext = new AudioContext();
17
- const stream = new MediaStream();
18
- stream.addTrack(mediaStreamTrack);
19
- const mediaStreamAudioSourceNode = audioContext.createMediaStreamSource(stream);
20
- const analyserNode = audioContext.createAnalyser();
21
- mediaStreamAudioSourceNode.connect(analyserNode);
22
- // Since we just need a rough approximation and will be measuring
23
- // frequently, we want to drop this down from the default of 2048.
24
- analyserNode.fftSize = 32;
25
-
26
- const pcmData = new Float32Array(analyserNode.fftSize);
27
- let peak = 0;
28
-
29
- interval = window.setInterval(() => {
30
- onMeasure(peak);
31
- peak = 0;
32
- }, intervalMs);
33
-
34
- const tick = () => {
35
- timeout = window.setTimeout(() => {
36
- analyserNode.getFloatTimeDomainData(pcmData);
37
- let sumSquares = 0.0;
38
- for (const amplitude of pcmData) {
39
- sumSquares += amplitude * amplitude;
40
- }
41
- const current = Math.sqrt(sumSquares / pcmData.length);
42
- if (current > peak) {
43
- peak = current;
44
- }
45
- tick();
46
- }, intervalMs);
47
- };
48
- tick();
49
-
50
- return () => {
51
- mediaStreamAudioSourceNode.disconnect();
52
- analyserNode.disconnect();
53
- void audioContext.close();
54
- clearInterval(interval);
55
- clearTimeout(timeout);
56
- stream.removeTrack(mediaStreamTrack);
57
- };
58
- };