@dxos/plugin-transcription 0.8.4-main.7ace549 → 0.8.4-main.8baae0fced

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 (370) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/TranscriptionArticle-L6XANBH5.mjs +54 -0
  4. package/dist/lib/neutral/TranscriptionArticle-L6XANBH5.mjs.map +7 -0
  5. package/dist/lib/neutral/TranscriptionPlugin.mjs +34 -0
  6. package/dist/lib/neutral/TranscriptionPlugin.mjs.map +7 -0
  7. package/dist/lib/neutral/TranscriptionPlugin.node.mjs +25 -0
  8. package/dist/lib/neutral/TranscriptionPlugin.node.mjs.map +7 -0
  9. package/dist/lib/neutral/TranscriptionPlugin.workerd.mjs +21 -0
  10. package/dist/lib/neutral/TranscriptionPlugin.workerd.mjs.map +7 -0
  11. package/dist/lib/neutral/blueprint-definition-HOXDG5QP.mjs +15 -0
  12. package/dist/lib/neutral/blueprint-definition-HOXDG5QP.mjs.map +7 -0
  13. package/dist/lib/neutral/blueprints/index.mjs +8 -0
  14. package/dist/lib/neutral/capabilities/index.mjs +17 -0
  15. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  16. package/dist/lib/neutral/chunk-2O3ONPRZ.mjs +298 -0
  17. package/dist/lib/neutral/chunk-2O3ONPRZ.mjs.map +7 -0
  18. package/dist/lib/neutral/chunk-5FXU36PN.mjs +120 -0
  19. package/dist/lib/neutral/chunk-5FXU36PN.mjs.map +7 -0
  20. package/dist/lib/{browser/chunk-7GNN7E3U.mjs → neutral/chunk-ILSA3DU7.mjs} +100 -131
  21. package/dist/lib/neutral/chunk-ILSA3DU7.mjs.map +7 -0
  22. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  23. package/dist/lib/neutral/chunk-KAEXRX3Y.mjs +35 -0
  24. package/dist/lib/neutral/chunk-KAEXRX3Y.mjs.map +7 -0
  25. package/dist/lib/neutral/chunk-MLRJWAQH.mjs +179 -0
  26. package/dist/lib/neutral/chunk-MLRJWAQH.mjs.map +7 -0
  27. package/dist/lib/neutral/chunk-Y5EQAFFR.mjs +8 -0
  28. package/dist/lib/neutral/chunk-Y5EQAFFR.mjs.map +7 -0
  29. package/dist/lib/neutral/chunk-ZR4BH4QQ.mjs +30 -0
  30. package/dist/lib/neutral/chunk-ZR4BH4QQ.mjs.map +7 -0
  31. package/dist/lib/{browser/chunk-VBUIO677.mjs → neutral/chunk-ZWOWQAFX.mjs} +3 -9
  32. package/dist/lib/neutral/chunk-ZWOWQAFX.mjs.map +7 -0
  33. package/dist/lib/neutral/components/index.mjs +272 -0
  34. package/dist/lib/neutral/components/index.mjs.map +7 -0
  35. package/dist/lib/neutral/containers/index.mjs +9 -0
  36. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  37. package/dist/lib/neutral/create-RRWRIUSR.mjs +21 -0
  38. package/dist/lib/neutral/create-RRWRIUSR.mjs.map +7 -0
  39. package/dist/lib/neutral/hooks/index.mjs +19 -0
  40. package/dist/lib/neutral/index.mjs +44 -0
  41. package/dist/lib/neutral/meta.json +1 -0
  42. package/dist/lib/neutral/meta.mjs +8 -0
  43. package/dist/lib/neutral/meta.mjs.map +7 -0
  44. package/dist/lib/neutral/open-CVMX5KXZ.mjs +27 -0
  45. package/dist/lib/neutral/open-CVMX5KXZ.mjs.map +7 -0
  46. package/dist/lib/neutral/operation-handler-NXMOAXFP.mjs +13 -0
  47. package/dist/lib/neutral/operation-handler-NXMOAXFP.mjs.map +7 -0
  48. package/dist/lib/neutral/operations/index.mjs +8 -0
  49. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  50. package/dist/lib/neutral/plugin.mjs +16 -0
  51. package/dist/lib/neutral/plugin.mjs.map +7 -0
  52. package/dist/lib/neutral/react-surface-YMZRO242.mjs +26 -0
  53. package/dist/lib/neutral/react-surface-YMZRO242.mjs.map +7 -0
  54. package/dist/lib/neutral/summarize-LA7TRW7A.mjs +78 -0
  55. package/dist/lib/neutral/summarize-LA7TRW7A.mjs.map +7 -0
  56. package/dist/lib/neutral/text-content-F4ASMITB.mjs +30 -0
  57. package/dist/lib/neutral/text-content-F4ASMITB.mjs.map +7 -0
  58. package/dist/lib/{node-esm/transcriber-CPD3FZ7M.mjs → neutral/transcriber-ABHATBVH.mjs} +20 -18
  59. package/dist/lib/neutral/transcriber-ABHATBVH.mjs.map +7 -0
  60. package/dist/lib/neutral/translations.mjs +24 -0
  61. package/dist/lib/neutral/translations.mjs.map +7 -0
  62. package/dist/lib/neutral/types/index.mjs +10 -0
  63. package/dist/lib/neutral/types/index.mjs.map +7 -0
  64. package/dist/types/src/TranscriptionPlugin.d.ts +3 -1
  65. package/dist/types/src/TranscriptionPlugin.d.ts.map +1 -1
  66. package/dist/types/src/TranscriptionPlugin.node.d.ts +4 -0
  67. package/dist/types/src/TranscriptionPlugin.node.d.ts.map +1 -0
  68. package/dist/types/src/TranscriptionPlugin.test.d.ts +2 -0
  69. package/dist/types/src/TranscriptionPlugin.test.d.ts.map +1 -0
  70. package/dist/types/src/TranscriptionPlugin.workerd.d.ts +4 -0
  71. package/dist/types/src/TranscriptionPlugin.workerd.d.ts.map +1 -0
  72. package/dist/types/src/blueprints/index.d.ts +2 -0
  73. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  74. package/dist/types/src/blueprints/transcription-blueprint.d.ts +4 -0
  75. package/dist/types/src/blueprints/transcription-blueprint.d.ts.map +1 -0
  76. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -4
  77. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  78. package/dist/types/src/capabilities/index.d.ts +10 -5
  79. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  80. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  81. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  82. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  83. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  84. package/dist/types/src/capabilities/text-content.d.ts +8 -0
  85. package/dist/types/src/capabilities/text-content.d.ts.map +1 -0
  86. package/dist/types/src/capabilities/transcriber.d.ts +4 -3
  87. package/dist/types/src/capabilities/transcriber.d.ts.map +1 -1
  88. package/dist/types/src/components/Oracle/Oracle.d.ts +24 -0
  89. package/dist/types/src/components/Oracle/Oracle.d.ts.map +1 -0
  90. package/dist/types/src/components/Oracle/Oracle.stories.d.ts +32 -0
  91. package/dist/types/src/components/Oracle/Oracle.stories.d.ts.map +1 -0
  92. package/dist/types/src/components/Oracle/index.d.ts +2 -0
  93. package/dist/types/src/components/Oracle/index.d.ts.map +1 -0
  94. package/dist/types/src/components/Transcription/Transcription.d.ts +13 -0
  95. package/dist/types/src/components/Transcription/Transcription.d.ts.map +1 -0
  96. package/dist/types/src/components/Transcription/Transcription.stories.d.ts +37 -0
  97. package/dist/types/src/components/Transcription/Transcription.stories.d.ts.map +1 -0
  98. package/dist/types/src/components/Transcription/index.d.ts +2 -0
  99. package/dist/types/src/components/Transcription/index.d.ts.map +1 -0
  100. package/dist/types/src/components/{Transcript/transcript-extension.d.ts → Transcription/transcription-extension.d.ts} +3 -3
  101. package/dist/types/src/components/Transcription/transcription-extension.d.ts.map +1 -0
  102. package/dist/types/src/components/index.d.ts +2 -3
  103. package/dist/types/src/components/index.d.ts.map +1 -1
  104. package/dist/types/src/containers/TranscriptionArticle/TranscriptionArticle.d.ts +6 -0
  105. package/dist/types/src/containers/TranscriptionArticle/TranscriptionArticle.d.ts.map +1 -0
  106. package/dist/types/src/containers/TranscriptionArticle/TranscriptionArticle.stories.d.ts +28 -0
  107. package/dist/types/src/containers/TranscriptionArticle/TranscriptionArticle.stories.d.ts.map +1 -0
  108. package/dist/types/src/containers/TranscriptionArticle/index.d.ts +2 -0
  109. package/dist/types/src/containers/TranscriptionArticle/index.d.ts.map +1 -0
  110. package/dist/types/src/containers/index.d.ts +3 -0
  111. package/dist/types/src/containers/index.d.ts.map +1 -0
  112. package/dist/types/src/enrichment/conversation.test.d.ts +2 -0
  113. package/dist/types/src/enrichment/conversation.test.d.ts.map +1 -0
  114. package/dist/types/src/enrichment/operations.d.ts +200 -0
  115. package/dist/types/src/enrichment/operations.d.ts.map +1 -0
  116. package/dist/types/src/enrichment/parser.d.ts +26 -0
  117. package/dist/types/src/enrichment/parser.d.ts.map +1 -0
  118. package/dist/types/src/enrichment/stream-simulator.d.ts +38 -0
  119. package/dist/types/src/enrichment/stream-simulator.d.ts.map +1 -0
  120. package/dist/types/src/hooks/index.d.ts +2 -1
  121. package/dist/types/src/hooks/index.d.ts.map +1 -1
  122. package/dist/types/src/hooks/useAudioFile.d.ts.map +1 -1
  123. package/dist/types/src/hooks/useAudioTrack.d.ts.map +1 -1
  124. package/dist/types/src/hooks/useFeedModelAdapter.d.ts +12 -0
  125. package/dist/types/src/hooks/useFeedModelAdapter.d.ts.map +1 -0
  126. package/dist/types/src/hooks/useTranscriber.d.ts +2 -2
  127. package/dist/types/src/hooks/useTranscriber.d.ts.map +1 -1
  128. package/dist/types/src/hooks/useTranscriptionRecording.d.ts +12 -0
  129. package/dist/types/src/hooks/useTranscriptionRecording.d.ts.map +1 -0
  130. package/dist/types/src/hooks/useVoiceInput.d.ts.map +1 -1
  131. package/dist/types/src/index.d.ts +2 -3
  132. package/dist/types/src/index.d.ts.map +1 -1
  133. package/dist/types/src/meta.d.ts +2 -2
  134. package/dist/types/src/meta.d.ts.map +1 -1
  135. package/dist/types/src/model/model.d.ts +2 -2
  136. package/dist/types/src/model/model.d.ts.map +1 -1
  137. package/dist/types/src/{segments-normalization → normalization}/index.d.ts +1 -1
  138. package/dist/types/src/normalization/index.d.ts.map +1 -0
  139. package/dist/types/src/{segments-normalization → normalization}/message-normalizer.d.ts +8 -6
  140. package/dist/types/src/normalization/message-normalizer.d.ts.map +1 -0
  141. package/dist/types/src/normalization/normalization.d.ts +549 -0
  142. package/dist/types/src/normalization/normalization.d.ts.map +1 -0
  143. package/dist/types/src/normalization/normalization.test.d.ts.map +1 -0
  144. package/dist/types/src/normalization/utils.d.ts.map +1 -0
  145. package/dist/types/src/operations/create.d.ts +5 -0
  146. package/dist/types/src/operations/create.d.ts.map +1 -0
  147. package/dist/types/src/operations/index.d.ts +3 -0
  148. package/dist/types/src/operations/index.d.ts.map +1 -0
  149. package/dist/types/src/operations/open.d.ts +5 -0
  150. package/dist/types/src/operations/open.d.ts.map +1 -0
  151. package/dist/types/src/operations/summarize.d.ts +8 -0
  152. package/dist/types/src/operations/summarize.d.ts.map +1 -0
  153. package/dist/types/src/plugin.d.ts +4 -0
  154. package/dist/types/src/plugin.d.ts.map +1 -0
  155. package/dist/types/src/stories/FileTranscription.stories.d.ts +20 -0
  156. package/dist/types/src/stories/FileTranscription.stories.d.ts.map +1 -0
  157. package/dist/types/src/{components/stories → stories}/KeyWordRecognition.stories.d.ts +2 -2
  158. package/dist/types/src/stories/KeyWordRecognition.stories.d.ts.map +1 -0
  159. package/dist/types/src/{components/stories/MicrophoneTranscription.stories.d.ts → stories/LiveTranscription.stories.d.ts} +7 -7
  160. package/dist/types/src/stories/LiveTranscription.stories.d.ts.map +1 -0
  161. package/dist/types/src/stories/TranscriptionStory.d.ts +21 -0
  162. package/dist/types/src/stories/TranscriptionStory.d.ts.map +1 -0
  163. package/dist/types/src/stories/common.d.ts +46 -0
  164. package/dist/types/src/stories/common.d.ts.map +1 -0
  165. package/dist/types/src/testing/testing.d.ts +9 -10
  166. package/dist/types/src/testing/testing.d.ts.map +1 -1
  167. package/dist/types/src/transcriber/index.d.ts +1 -1
  168. package/dist/types/src/transcriber/index.d.ts.map +1 -1
  169. package/dist/types/src/transcriber/media-stream-recorder.d.ts +2 -2
  170. package/dist/types/src/transcriber/media-stream-recorder.d.ts.map +1 -1
  171. package/dist/types/src/transcriber/transcriber.d.ts +59 -4
  172. package/dist/types/src/transcriber/transcriber.d.ts.map +1 -1
  173. package/dist/types/src/transcriber/transcriber.test.d.ts +2 -0
  174. package/dist/types/src/transcriber/transcriber.test.d.ts.map +1 -0
  175. package/dist/types/src/transcriber/transcription-manager.d.ts +12 -7
  176. package/dist/types/src/transcriber/transcription-manager.d.ts.map +1 -1
  177. package/dist/types/src/translations.d.ts +9 -8
  178. package/dist/types/src/translations.d.ts.map +1 -1
  179. package/dist/types/src/types/TranscriptOperation.d.ts +927 -0
  180. package/dist/types/src/types/TranscriptOperation.d.ts.map +1 -0
  181. package/dist/types/src/types/TranscriptionCapabilities.d.ts +17 -0
  182. package/dist/types/src/types/TranscriptionCapabilities.d.ts.map +1 -0
  183. package/dist/types/src/types/index.d.ts +2 -2
  184. package/dist/types/src/types/index.d.ts.map +1 -1
  185. package/dist/types/src/util/array.d.ts.map +1 -1
  186. package/dist/types/src/util/get-time-str.d.ts.map +1 -1
  187. package/dist/types/src/util/index.d.ts +1 -0
  188. package/dist/types/src/util/index.d.ts.map +1 -1
  189. package/dist/types/src/util/monitor-audio-level.d.ts.map +1 -1
  190. package/dist/types/src/util/render-byline.d.ts +4 -0
  191. package/dist/types/src/util/render-byline.d.ts.map +1 -0
  192. package/dist/types/tsconfig.tsbuildinfo +1 -1
  193. package/package.json +157 -84
  194. package/src/TranscriptionPlugin.node.ts +20 -0
  195. package/src/TranscriptionPlugin.test.ts +31 -0
  196. package/src/TranscriptionPlugin.tsx +20 -63
  197. package/src/TranscriptionPlugin.workerd.ts +18 -0
  198. package/src/blueprints/index.ts +5 -0
  199. package/src/blueprints/transcription-blueprint.ts +29 -0
  200. package/src/capabilities/blueprint-definition.ts +12 -24
  201. package/src/capabilities/index.ts +11 -7
  202. package/src/capabilities/operation-handler.ts +16 -0
  203. package/src/capabilities/react-surface.tsx +22 -13
  204. package/src/capabilities/text-content.ts +33 -0
  205. package/src/capabilities/transcriber.ts +53 -42
  206. package/src/components/Oracle/Oracle.stories.tsx +147 -0
  207. package/src/components/Oracle/Oracle.tsx +141 -0
  208. package/src/components/Oracle/index.ts +5 -0
  209. package/src/components/Transcription/Transcription.stories.tsx +213 -0
  210. package/src/components/Transcription/Transcription.tsx +58 -0
  211. package/src/components/{Transcript → Transcription}/index.ts +1 -1
  212. package/src/components/{Transcript/transcript-extension.ts → Transcription/transcription-extension.ts} +4 -4
  213. package/src/components/index.ts +2 -6
  214. package/src/containers/TranscriptionArticle/TranscriptionArticle.stories.tsx +61 -0
  215. package/src/containers/TranscriptionArticle/TranscriptionArticle.tsx +62 -0
  216. package/src/containers/TranscriptionArticle/index.ts +5 -0
  217. package/src/containers/index.ts +7 -0
  218. package/src/enrichment/conversation.test.ts +162 -0
  219. package/src/enrichment/conversation.txt +23 -0
  220. package/src/enrichment/operations.ts +268 -0
  221. package/src/enrichment/parser.ts +101 -0
  222. package/src/enrichment/stream-simulator.ts +125 -0
  223. package/src/hooks/index.ts +2 -1
  224. package/src/hooks/useFeedModelAdapter.ts +46 -0
  225. package/src/hooks/useTranscriber.ts +6 -3
  226. package/src/hooks/useTranscriptionRecording.ts +87 -0
  227. package/src/hooks/useVoiceInput.ts +2 -3
  228. package/src/index.ts +4 -5
  229. package/src/meta.ts +4 -3
  230. package/src/model/model.test.ts +9 -3
  231. package/src/model/model.ts +3 -3
  232. package/src/{segments-normalization → normalization}/message-normalizer.ts +34 -21
  233. package/src/{segments-normalization → normalization}/normalization.test.ts +4 -43
  234. package/src/normalization/normalization.ts +76 -0
  235. package/src/operations/create.ts +24 -0
  236. package/src/operations/index.ts +11 -0
  237. package/src/operations/open.ts +28 -0
  238. package/src/operations/summarize.ts +101 -0
  239. package/src/plugin.ts +11 -0
  240. package/src/stories/FileTranscription.stories.tsx +143 -0
  241. package/src/{components/stories → stories}/KeyWordRecognition.stories.tsx +40 -40
  242. package/src/stories/LiveTranscription.stories.tsx +153 -0
  243. package/src/stories/TranscriptionStory.tsx +101 -0
  244. package/src/stories/common.ts +233 -0
  245. package/src/testing/testing.ts +35 -47
  246. package/src/transcriber/index.ts +1 -1
  247. package/src/transcriber/media-stream-recorder.ts +3 -3
  248. package/src/transcriber/transcriber.browser.test.ts +1 -2
  249. package/src/transcriber/transcriber.test.ts +104 -0
  250. package/src/transcriber/transcriber.ts +102 -57
  251. package/src/transcriber/transcription-manager.ts +29 -18
  252. package/src/translations.ts +10 -7
  253. package/src/types/TranscriptOperation.ts +103 -0
  254. package/src/types/TranscriptionCapabilities.ts +39 -0
  255. package/src/types/index.ts +2 -2
  256. package/src/util/index.ts +1 -0
  257. package/src/util/render-byline.ts +33 -0
  258. package/dist/lib/browser/TranscriptContainer-OQFBAGSP.mjs +0 -11
  259. package/dist/lib/browser/blueprint-definition-GZ7NOODS.mjs +0 -147
  260. package/dist/lib/browser/blueprint-definition-GZ7NOODS.mjs.map +0 -7
  261. package/dist/lib/browser/chunk-3MKZ2MNQ.mjs +0 -16
  262. package/dist/lib/browser/chunk-3MKZ2MNQ.mjs.map +0 -7
  263. package/dist/lib/browser/chunk-7GNN7E3U.mjs.map +0 -7
  264. package/dist/lib/browser/chunk-C5YV3JZF.mjs +0 -738
  265. package/dist/lib/browser/chunk-C5YV3JZF.mjs.map +0 -7
  266. package/dist/lib/browser/chunk-O33THH53.mjs +0 -8
  267. package/dist/lib/browser/chunk-O33THH53.mjs.map +0 -7
  268. package/dist/lib/browser/chunk-QOSZIUE2.mjs +0 -32
  269. package/dist/lib/browser/chunk-QOSZIUE2.mjs.map +0 -7
  270. package/dist/lib/browser/chunk-VBUIO677.mjs.map +0 -7
  271. package/dist/lib/browser/index.mjs +0 -128
  272. package/dist/lib/browser/index.mjs.map +0 -7
  273. package/dist/lib/browser/intent-resolver-5CGCLOXB.mjs +0 -25
  274. package/dist/lib/browser/intent-resolver-5CGCLOXB.mjs.map +0 -7
  275. package/dist/lib/browser/meta.json +0 -1
  276. package/dist/lib/browser/react-surface-OK55WK7J.mjs +0 -32
  277. package/dist/lib/browser/react-surface-OK55WK7J.mjs.map +0 -7
  278. package/dist/lib/browser/transcriber-6YDM5ZDT.mjs +0 -56
  279. package/dist/lib/browser/transcriber-6YDM5ZDT.mjs.map +0 -7
  280. package/dist/lib/browser/types/index.mjs +0 -10
  281. package/dist/lib/node-esm/TranscriptContainer-GM47P6WH.mjs +0 -12
  282. package/dist/lib/node-esm/blueprint-definition-GAHQBYTF.mjs +0 -148
  283. package/dist/lib/node-esm/blueprint-definition-GAHQBYTF.mjs.map +0 -7
  284. package/dist/lib/node-esm/chunk-5JN2MHYA.mjs +0 -467
  285. package/dist/lib/node-esm/chunk-5JN2MHYA.mjs.map +0 -7
  286. package/dist/lib/node-esm/chunk-IKGUNN3Z.mjs +0 -739
  287. package/dist/lib/node-esm/chunk-IKGUNN3Z.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-SSYFSLB7.mjs +0 -10
  289. package/dist/lib/node-esm/chunk-SSYFSLB7.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-SWUVPFKR.mjs +0 -17
  291. package/dist/lib/node-esm/chunk-SWUVPFKR.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-U4YPUD2F.mjs +0 -33
  293. package/dist/lib/node-esm/chunk-U4YPUD2F.mjs.map +0 -7
  294. package/dist/lib/node-esm/chunk-YVNQN2J6.mjs +0 -30
  295. package/dist/lib/node-esm/chunk-YVNQN2J6.mjs.map +0 -7
  296. package/dist/lib/node-esm/index.mjs +0 -129
  297. package/dist/lib/node-esm/index.mjs.map +0 -7
  298. package/dist/lib/node-esm/intent-resolver-4H4CXIAL.mjs +0 -26
  299. package/dist/lib/node-esm/intent-resolver-4H4CXIAL.mjs.map +0 -7
  300. package/dist/lib/node-esm/meta.json +0 -1
  301. package/dist/lib/node-esm/react-surface-EK6K2MMD.mjs +0 -33
  302. package/dist/lib/node-esm/react-surface-EK6K2MMD.mjs.map +0 -7
  303. package/dist/lib/node-esm/transcriber-CPD3FZ7M.mjs.map +0 -7
  304. package/dist/lib/node-esm/types/index.mjs +0 -11
  305. package/dist/types/src/capabilities/capabilities.d.ts +0 -17
  306. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  307. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  308. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  309. package/dist/types/src/components/Transcript/Transcript.d.ts +0 -19
  310. package/dist/types/src/components/Transcript/Transcript.d.ts.map +0 -1
  311. package/dist/types/src/components/Transcript/Transcript.stories.d.ts +0 -39
  312. package/dist/types/src/components/Transcript/Transcript.stories.d.ts.map +0 -1
  313. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts +0 -28
  314. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts.map +0 -1
  315. package/dist/types/src/components/Transcript/index.d.ts +0 -2
  316. package/dist/types/src/components/Transcript/index.d.ts.map +0 -1
  317. package/dist/types/src/components/Transcript/transcript-extension.d.ts.map +0 -1
  318. package/dist/types/src/components/TranscriptContainer.d.ts +0 -9
  319. package/dist/types/src/components/TranscriptContainer.d.ts.map +0 -1
  320. package/dist/types/src/components/stories/FileTranscription.stories.d.ts +0 -18
  321. package/dist/types/src/components/stories/FileTranscription.stories.d.ts.map +0 -1
  322. package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts.map +0 -1
  323. package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts.map +0 -1
  324. package/dist/types/src/components/stories/TranscriptionStory.d.ts +0 -12
  325. package/dist/types/src/components/stories/TranscriptionStory.d.ts.map +0 -1
  326. package/dist/types/src/components/stories/useIsSpeaking.d.ts +0 -3
  327. package/dist/types/src/components/stories/useIsSpeaking.d.ts.map +0 -1
  328. package/dist/types/src/functions/index.d.ts +0 -3
  329. package/dist/types/src/functions/index.d.ts.map +0 -1
  330. package/dist/types/src/functions/open.d.ts +0 -7
  331. package/dist/types/src/functions/open.d.ts.map +0 -1
  332. package/dist/types/src/functions/summarize.d.ts +0 -11
  333. package/dist/types/src/functions/summarize.d.ts.map +0 -1
  334. package/dist/types/src/hooks/useQueueModelAdapter.d.ts +0 -8
  335. package/dist/types/src/hooks/useQueueModelAdapter.d.ts.map +0 -1
  336. package/dist/types/src/segments-normalization/index.d.ts.map +0 -1
  337. package/dist/types/src/segments-normalization/message-normalizer.d.ts.map +0 -1
  338. package/dist/types/src/segments-normalization/normalization.d.ts +0 -461
  339. package/dist/types/src/segments-normalization/normalization.d.ts.map +0 -1
  340. package/dist/types/src/segments-normalization/normalization.test.d.ts.map +0 -1
  341. package/dist/types/src/segments-normalization/utils.d.ts.map +0 -1
  342. package/dist/types/src/types/TranscriptAction.d.ts +0 -23
  343. package/dist/types/src/types/TranscriptAction.d.ts.map +0 -1
  344. package/dist/types/src/types/types.d.ts +0 -5
  345. package/dist/types/src/types/types.d.ts.map +0 -1
  346. package/src/capabilities/capabilities.ts +0 -33
  347. package/src/capabilities/intent-resolver.ts +0 -19
  348. package/src/components/Transcript/Transcript.stories.tsx +0 -245
  349. package/src/components/Transcript/Transcript.tsx +0 -93
  350. package/src/components/Transcript/deprecated/OldTranscript.tsx +0 -260
  351. package/src/components/TranscriptContainer.tsx +0 -36
  352. package/src/components/stories/FileTranscription.stories.tsx +0 -257
  353. package/src/components/stories/MicrophoneTranscription.stories.tsx +0 -288
  354. package/src/components/stories/TranscriptionStory.tsx +0 -44
  355. package/src/components/stories/useIsSpeaking.tsx +0 -40
  356. package/src/functions/index.ts +0 -6
  357. package/src/functions/open.ts +0 -38
  358. package/src/functions/summarize.ts +0 -103
  359. package/src/hooks/useQueueModelAdapter.ts +0 -66
  360. package/src/segments-normalization/normalization.ts +0 -115
  361. package/src/types/TranscriptAction.ts +0 -23
  362. package/src/types/types.ts +0 -9
  363. package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
  364. package/dist/lib/{browser/TranscriptContainer-OQFBAGSP.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  365. package/dist/lib/{node-esm/types → neutral/hooks}/index.mjs.map +0 -0
  366. package/dist/lib/{node-esm/TranscriptContainer-GM47P6WH.mjs.map → neutral/index.mjs.map} +0 -0
  367. package/dist/types/src/{segments-normalization → normalization}/normalization.test.d.ts +0 -0
  368. package/dist/types/src/{segments-normalization → normalization}/utils.d.ts +0 -0
  369. package/src/{segments-normalization → normalization}/index.ts +1 -1
  370. /package/src/{segments-normalization → normalization}/utils.ts +0 -0
@@ -1,257 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type Meta, type StoryObj } from '@storybook/react-vite';
6
- import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
7
-
8
- import { Events, IntentPlugin, SettingsPlugin } from '@dxos/app-framework';
9
- import { withPluginManager } from '@dxos/app-framework/testing';
10
- import { scheduleTask } from '@dxos/async';
11
- import { Context } from '@dxos/context';
12
- import { Obj } from '@dxos/echo';
13
- import { createQueueDXN } from '@dxos/echo/internal';
14
- import { MemoryQueue } from '@dxos/echo-db';
15
- import { FunctionExecutor, ServiceContainer } from '@dxos/functions-runtime';
16
- import { log } from '@dxos/log';
17
- import { ClientPlugin } from '@dxos/plugin-client';
18
- import { PreviewPlugin } from '@dxos/plugin-preview';
19
- import { SpacePlugin } from '@dxos/plugin-space';
20
- import { StorybookLayoutPlugin } from '@dxos/plugin-storybook-layout';
21
- import { ThemePlugin } from '@dxos/plugin-theme';
22
- import { withLayout, withTheme } from '@dxos/react-ui/testing';
23
- import { defaultTx } from '@dxos/react-ui-theme';
24
- import { TestSchema } from '@dxos/schema/testing';
25
- import { type Actor, Message, Organization, Person } from '@dxos/types';
26
- import { seedTestData } from '@dxos/types/testing';
27
-
28
- import { useAudioFile, useQueueModelAdapter, useTranscriber } from '../../hooks';
29
- import { MessageNormalizer, getActorId } from '../../segments-normalization';
30
- import { TestItem } from '../../testing';
31
- import { type MediaStreamRecorderParams, type TranscriberParams } from '../../transcriber';
32
- import { TranscriptionPlugin } from '../../TranscriptionPlugin';
33
- import { renderByline } from '../Transcript';
34
-
35
- import { TranscriptionStory } from './TranscriptionStory';
36
- import { useIsSpeaking } from './useIsSpeaking';
37
-
38
- const AudioFile = ({
39
- detectSpeaking,
40
- audioUrl,
41
- normalizeSentences,
42
- transcriberConfig,
43
- recorderConfig,
44
- audioConstraints,
45
- }: {
46
- detectSpeaking?: boolean;
47
- normalizeSentences?: boolean;
48
- audioUrl: string;
49
- transcriberConfig?: TranscriberParams['config'];
50
- recorderConfig?: MediaStreamRecorderParams['config'];
51
- audioConstraints?: MediaTrackConstraints;
52
- }) => {
53
- const [running, setRunning] = useState(false);
54
- const actor: Actor.Actor = useMemo(() => ({ name: 'You' }), []);
55
-
56
- // Audio.
57
- const { audio, track, stream } = useAudioFile(audioUrl, audioConstraints);
58
-
59
- // Speaking.
60
- const isSpeaking = detectSpeaking ? useIsSpeaking(track) : true;
61
- const ref = useRef<HTMLAudioElement>(null);
62
- useEffect(() => {
63
- if (ref.current && stream) {
64
- ref.current.srcObject = stream;
65
- }
66
- }, [stream]);
67
-
68
- useEffect(() => {
69
- if (!audio) {
70
- return;
71
- }
72
-
73
- if (running) {
74
- void audio.play();
75
- } else {
76
- void audio.pause();
77
- }
78
- }, [audio, running]);
79
-
80
- // Transcriber.
81
- // TODO(dmaretskyi): Use space.queues.create() instead.
82
- const queueDxn = useMemo(() => createQueueDXN(), []);
83
- const queue = useMemo(() => new MemoryQueue<Message.Message>(queueDxn), [queueDxn]);
84
-
85
- const model = useQueueModelAdapter(renderByline([]), queue);
86
- const handleSegments = useCallback<TranscriberParams['onSegments']>(
87
- async (blocks) => {
88
- void queue?.append([
89
- Obj.make(Message.Message, {
90
- created: new Date().toISOString(),
91
- sender: actor,
92
- blocks,
93
- }),
94
- ]);
95
- },
96
- [queue],
97
- );
98
-
99
- const transcriber = useTranscriber({
100
- audioStreamTrack: track,
101
- onSegments: handleSegments,
102
- transcriberConfig,
103
- recorderConfig,
104
- });
105
-
106
- // Normalize sentences.
107
- const normalizer = useMemo(() => {
108
- if (!normalizeSentences) {
109
- return;
110
- }
111
- const executor = new FunctionExecutor(
112
- new ServiceContainer().setServices({
113
- // ai: {
114
- // client: new Edge AiServiceClient({
115
- // endpoint: AI_SERVICE_ENDPOINT.REMOTE,
116
- // defaultGenerationOptions: {
117
- // model: '@anthropic/claude-3-5-sonnet-20241022',
118
- // },
119
- // }),
120
- // },
121
- }),
122
- );
123
-
124
- return new MessageNormalizer({
125
- functionExecutor: executor,
126
- queue,
127
- startingCursor: { actorId: getActorId(actor), timestamp: new Date().toISOString() },
128
- });
129
- }, [normalizeSentences, queue, actor]);
130
-
131
- useEffect(() => {
132
- if (!normalizer) {
133
- return;
134
- }
135
- const ctx = new Context();
136
- scheduleTask(ctx, async () => {
137
- await normalizer.open();
138
- ctx.onDispose(async () => {
139
- await normalizer.close();
140
- });
141
- });
142
- return () => {
143
- void ctx.dispose();
144
- };
145
- }, [normalizer]);
146
-
147
- const manageChunkRecording = () => {
148
- if (running && isSpeaking && transcriber) {
149
- log.info('starting transcription');
150
- transcriber?.startChunksRecording();
151
- } else if ((!isSpeaking || !running) && transcriber) {
152
- log.info('stopping transcription');
153
- transcriber?.stopChunksRecording();
154
- }
155
- };
156
-
157
- useEffect(() => {
158
- const ctx = new Context();
159
- scheduleTask(ctx, async () => {
160
- if (transcriber && running) {
161
- await transcriber.open();
162
- } else if (!running) {
163
- await transcriber?.close();
164
- }
165
- manageChunkRecording();
166
- });
167
-
168
- return () => {
169
- void ctx.dispose();
170
- };
171
- }, [transcriber, running]);
172
-
173
- useEffect(() => {
174
- manageChunkRecording();
175
- }, [isSpeaking, stream]);
176
-
177
- return (
178
- <TranscriptionStory
179
- disabled={!stream}
180
- model={model}
181
- running={running}
182
- onRunningChange={setRunning}
183
- audioRef={ref}
184
- />
185
- );
186
- };
187
-
188
- const meta = {
189
- title: 'plugins/plugin-transcription/FileTranscription',
190
- decorators: [
191
- withTheme,
192
- withLayout({ container: 'column' }),
193
- withPluginManager({
194
- plugins: [
195
- ClientPlugin({
196
- types: [TestItem, Person.Person, Organization.Organization, TestSchema.DocumentType],
197
- onClientInitialized: async ({ client }) => {
198
- await client.halo.createIdentity();
199
- await client.spaces.waitUntilReady();
200
- await client.spaces.default.waitUntilReady();
201
- await seedTestData(client.spaces.default);
202
- },
203
- }),
204
- SpacePlugin({}),
205
- IntentPlugin(),
206
-
207
- // UI
208
- ThemePlugin({ tx: defaultTx }),
209
- SettingsPlugin(),
210
- PreviewPlugin(),
211
- TranscriptionPlugin(),
212
- StorybookLayoutPlugin({}),
213
- ],
214
- fireEvents: [Events.SetupAppGraph],
215
- }),
216
- ],
217
- } satisfies Meta;
218
-
219
- export default meta;
220
-
221
- type Story = StoryObj<typeof meta>;
222
-
223
- const TRANSCRIBER_CONFIG = {
224
- transcribeAfterChunksAmount: 100,
225
- prefixBufferChunksAmount: 50,
226
- normalizeSentences: true,
227
- };
228
-
229
- const RECORDER_CONFIG = {
230
- interval: 200,
231
- };
232
-
233
- export const Default: StoryObj<typeof AudioFile> = {
234
- render: AudioFile,
235
- args: {
236
- detectSpeaking: true,
237
- // https://learnenglish.britishcouncil.org/general-english/audio-zone/living-london
238
- audioUrl: 'https://dxos.network/audio-london.m4a',
239
- // textUrl: 'https://dxos.network/audio-london.txt',
240
- transcriberConfig: TRANSCRIBER_CONFIG,
241
- recorderConfig: RECORDER_CONFIG,
242
- },
243
- };
244
-
245
- // TODO(mykola): Fix sentence normalization.
246
- // export const WithSentenceNormalization: StoryObj<typeof AudioFile> = {
247
- // render: AudioFile,
248
- // args: {
249
- // detectSpeaking: true,
250
- // normalizeSentences: true,
251
- // // https://learnenglish.britishcouncil.org/general-english/audio-zone/living-london
252
- // audioUrl: 'https://dxos.network/audio-london.m4a',
253
- // // textUrl: 'https://dxos.network/audio-london.txt',
254
- // transcriberConfig: TRANSCRIBER_CONFIG,
255
- // recorderConfig: RECORDER_CONFIG,
256
- // },
257
- // };
@@ -1,288 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type Meta, type StoryObj } from '@storybook/react-vite';
6
- import type * as Schema from 'effect/Schema';
7
- import React, { useCallback, useEffect, useMemo, useState } from 'react';
8
-
9
- import { Events, IntentPlugin, SettingsPlugin } from '@dxos/app-framework';
10
- import { withPluginManager } from '@dxos/app-framework/testing';
11
- import {
12
- type ExtractionFunction,
13
- extractionAnthropicFunction,
14
- extractionNerFunction,
15
- getNer,
16
- processTranscriptMessage,
17
- } from '@dxos/assistant/extraction';
18
- import { Filter, type Obj } from '@dxos/echo';
19
- import { createQueueDXN } from '@dxos/echo/internal';
20
- import { MemoryQueue } from '@dxos/echo-db';
21
- import { FunctionExecutor, ServiceContainer } from '@dxos/functions-runtime';
22
- import { invariant } from '@dxos/invariant';
23
- import { log } from '@dxos/log';
24
- import { ClientPlugin } from '@dxos/plugin-client';
25
- import { PreviewPlugin } from '@dxos/plugin-preview';
26
- import { SpacePlugin } from '@dxos/plugin-space';
27
- import { StorybookLayoutPlugin } from '@dxos/plugin-storybook-layout';
28
- import { ThemePlugin } from '@dxos/plugin-theme';
29
- import { IndexKind, useSpace } from '@dxos/react-client/echo';
30
- import { withLayout, withTheme } from '@dxos/react-ui/testing';
31
- import { defaultTx } from '@dxos/react-ui-theme';
32
- import { TestSchema } from '@dxos/schema/testing';
33
- import { Message, Organization, Person } from '@dxos/types';
34
- import { seedTestData } from '@dxos/types/testing';
35
-
36
- import { useAudioTrack, useQueueModelAdapter, useTranscriber } from '../../hooks';
37
- import { TestItem } from '../../testing';
38
- import { type MediaStreamRecorderParams, type TranscriberParams } from '../../transcriber';
39
- import { TranscriptionPlugin } from '../../TranscriptionPlugin';
40
- import { renderByline } from '../Transcript';
41
-
42
- import { TranscriptionStory } from './TranscriptionStory';
43
- import { useIsSpeaking } from './useIsSpeaking';
44
-
45
- const TRANSCRIBER_CONFIG = {
46
- transcribeAfterChunksAmount: 50,
47
- prefixBufferChunksAmount: 10,
48
- };
49
-
50
- const RECORDER_CONFIG = {
51
- interval: 200,
52
- };
53
-
54
- type StoryProps = {
55
- detectSpeaking?: boolean;
56
- transcriberConfig: TranscriberParams['config'];
57
- recorderConfig: MediaStreamRecorderParams['config'];
58
- audioConstraints?: MediaTrackConstraints;
59
- entityExtraction: 'none' | 'ner' | 'llm';
60
- };
61
-
62
- const DefaultStory = ({
63
- detectSpeaking,
64
- entityExtraction = 'none',
65
- transcriberConfig,
66
- recorderConfig,
67
- audioConstraints,
68
- }: StoryProps) => {
69
- const [running, setRunning] = useState(false);
70
-
71
- // Audio.
72
- const track = useAudioTrack(running, audioConstraints);
73
-
74
- // Speaking.
75
- const isSpeaking = detectSpeaking ? useIsSpeaking(track) : true;
76
-
77
- // Queue.
78
- // TODO(dmaretskyi): Use space.queues.create() instead.
79
- const queueDxn = useMemo(() => createQueueDXN(), []);
80
- // TODO(wittjosiah): Find a simpler way to define this type.
81
- const queue = useMemo(() => new MemoryQueue<Schema.Schema.Type<typeof Message.Message>>(queueDxn), [queueDxn]);
82
- const model = useQueueModelAdapter(renderByline([]), queue);
83
- const space = useSpace();
84
-
85
- useEffect(() => {
86
- if (!space) {
87
- log.warn('no space');
88
- }
89
- }, [space]);
90
-
91
- // Entity extraction.
92
- const { extractionFunction, executor, objects } = useMemo(() => {
93
- if (!space) {
94
- log.warn('no space');
95
- return {};
96
- }
97
-
98
- let executor: FunctionExecutor | undefined;
99
- let extractionFunction: ExtractionFunction | undefined;
100
- let objects: Promise<Obj.Any[]> | undefined;
101
-
102
- if (entityExtraction === 'ner') {
103
- // Init model loading. Takes time.
104
- void getNer();
105
- extractionFunction = extractionNerFunction;
106
- } else if (entityExtraction === 'llm') {
107
- extractionFunction = extractionAnthropicFunction;
108
- objects = space.db
109
- .query(
110
- Filter.or(
111
- Filter.type(Person.Person),
112
- Filter.type(Organization.Organization),
113
- Filter.type(TestSchema.DocumentType),
114
- ),
115
- )
116
- .run()
117
- .then((result) => result.objects);
118
- }
119
- if (entityExtraction !== 'none') {
120
- executor = new FunctionExecutor(
121
- new ServiceContainer().setServices({
122
- // ai: {
123
- // client: new Edge AiServiceClient({
124
- // endpoint: AI_SERVICE_ENDPOINT.REMOTE,
125
- // }),
126
- // },
127
- // database: { db: space!.db },
128
- }),
129
- );
130
- }
131
-
132
- return { extractionFunction, executor, objects };
133
- }, [entityExtraction, space]);
134
-
135
- // Transcriber.
136
- const handleSegments = useCallback<TranscriberParams['onSegments']>(
137
- async (blocks) => {
138
- const message = Message.make({
139
- sender: { name: 'You' },
140
- created: new Date().toISOString(),
141
- blocks,
142
- });
143
- if (!space) {
144
- void queue.append([message]);
145
- return;
146
- }
147
-
148
- if (entityExtraction !== 'none') {
149
- invariant(extractionFunction, 'extractionFunction is required');
150
- invariant(executor, 'executor is required');
151
- const result = await processTranscriptMessage({
152
- executor,
153
- function: extractionFunction,
154
- input: {
155
- message,
156
- objects: await objects,
157
- },
158
- options: {
159
- fallbackToRaw: true,
160
- timeout: 30_000,
161
- },
162
- });
163
- void queue.append([result.message]);
164
- } else {
165
- void queue.append([message]);
166
- }
167
- },
168
- [queue, space],
169
- );
170
-
171
- const transcriber = useTranscriber({
172
- audioStreamTrack: track,
173
- onSegments: handleSegments,
174
- transcriberConfig,
175
- recorderConfig,
176
- });
177
- const [isOpen, setIsOpen] = useState(false);
178
- useEffect(() => {
179
- void transcriber?.open().then(() => setIsOpen(true));
180
- return () => {
181
- void transcriber?.close().then(() => setIsOpen(false));
182
- };
183
- }, [transcriber]);
184
-
185
- // Manage transcription state.
186
- useEffect(() => {
187
- if (running && transcriber?.isOpen && isSpeaking) {
188
- transcriber?.startChunksRecording();
189
- } else if (!running || !isSpeaking) {
190
- transcriber?.stopChunksRecording();
191
- }
192
- }, [transcriber, running, isOpen, isSpeaking]);
193
-
194
- return <TranscriptionStory model={model} running={running} onRunningChange={setRunning} />;
195
- };
196
-
197
- const meta = {
198
- title: 'plugins/plugin-transcription/MicrophoneTranscription',
199
- render: DefaultStory,
200
- decorators: [
201
- withTheme,
202
- withLayout({ container: 'column' }),
203
- withPluginManager({
204
- plugins: [
205
- ClientPlugin({
206
- types: [TestItem, Person.Person, Organization.Organization, TestSchema.DocumentType],
207
- onClientInitialized: async ({ client }) => {
208
- await client.halo.createIdentity();
209
- await client.spaces.waitUntilReady();
210
- await client.spaces.default.waitUntilReady();
211
- // TODO(mykola): Make API easier to use.
212
- // TODO(mykola): Delete after enabling vector indexing by default.
213
- // Enable vector indexing.
214
- await client.services.services.QueryService!.setConfig({
215
- enabled: true,
216
- indexes: [
217
- //
218
- { kind: IndexKind.Kind.SCHEMA_MATCH },
219
- { kind: IndexKind.Kind.GRAPH },
220
- { kind: IndexKind.Kind.VECTOR },
221
- ],
222
- });
223
- await client.services.services.QueryService!.reindex();
224
- await seedTestData(client.spaces.default);
225
- },
226
- }),
227
- SpacePlugin({}),
228
- IntentPlugin(),
229
- SettingsPlugin(),
230
-
231
- // UI
232
- ThemePlugin({ tx: defaultTx }),
233
- PreviewPlugin(),
234
- TranscriptionPlugin(),
235
- StorybookLayoutPlugin({}),
236
- ],
237
- fireEvents: [Events.SetupAppGraph],
238
- }),
239
- ],
240
- } satisfies Meta<typeof DefaultStory>;
241
-
242
- export default meta;
243
-
244
- type Story = StoryObj<typeof meta>;
245
-
246
- export const Default: Story = {
247
- args: {
248
- detectSpeaking: false,
249
- entityExtraction: 'none',
250
- transcriberConfig: TRANSCRIBER_CONFIG,
251
- recorderConfig: RECORDER_CONFIG,
252
- audioConstraints: {
253
- echoCancellation: false,
254
- noiseSuppression: false,
255
- autoGainControl: false,
256
- },
257
- },
258
- };
259
-
260
- // NOTE: We are running out of free quota on hugging face entity extraction.
261
- // TODO(mykola): Fix hugging face quota issues.
262
- // export const EntityExtraction: Story = {
263
- // args: {
264
- // detectSpeaking: true,
265
- // entityExtraction: 'ner',
266
- // transcriberConfig: TRANSCRIBER_CONFIG,
267
- // recorderConfig: RECORDER_CONFIG,
268
- // audioConstraints: {
269
- // echoCancellation: true,
270
- // noiseSuppression: true,
271
- // autoGainControl: true,
272
- // },
273
- // },
274
- // };
275
-
276
- export const SpeechDetection: Story = {
277
- args: {
278
- detectSpeaking: true,
279
- entityExtraction: 'none',
280
- transcriberConfig: TRANSCRIBER_CONFIG,
281
- recorderConfig: RECORDER_CONFIG,
282
- audioConstraints: {
283
- echoCancellation: true,
284
- noiseSuppression: true,
285
- autoGainControl: true,
286
- },
287
- },
288
- };
@@ -1,44 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import '@dxos-theme';
6
-
7
- import React, { type Dispatch, type FC, type RefObject, type SetStateAction } from 'react';
8
-
9
- import { useSpace } from '@dxos/react-client/echo';
10
- import { IconButton, ScrollContainer, Toolbar } from '@dxos/react-ui';
11
- import { type Message } from '@dxos/types';
12
-
13
- import { type SerializationModel } from '../../model';
14
- import { TranscriptView } from '../Transcript';
15
-
16
- export const TranscriptionStory: FC<{
17
- model: SerializationModel<Message.Message>;
18
- disabled?: boolean;
19
- running: boolean;
20
- onRunningChange: Dispatch<SetStateAction<boolean>>;
21
- audioRef?: RefObject<HTMLAudioElement | null>;
22
- }> = ({ model, running, onRunningChange, audioRef, disabled }) => {
23
- const space = useSpace();
24
-
25
- return (
26
- <div className='flex flex-col is-[30rem]'>
27
- {audioRef && <audio ref={audioRef} autoPlay />}
28
- <Toolbar.Root>
29
- <IconButton
30
- iconOnly
31
- disabled={disabled}
32
- icon={running ? 'ph--pause--regular' : 'ph--play--regular'}
33
- label={running ? 'Pause' : 'Play'}
34
- onClick={() => onRunningChange((running) => !running)}
35
- />
36
- </Toolbar.Root>
37
- <ScrollContainer.Root pin>
38
- <ScrollContainer.Viewport>
39
- <TranscriptView space={space} model={model} />
40
- </ScrollContainer.Viewport>
41
- </ScrollContainer.Root>
42
- </div>
43
- );
44
- };
@@ -1,40 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import '@dxos-theme';
6
-
7
- import { useEffect, useMemo, useState } from 'react';
8
-
9
- import { scheduleTask } from '@dxos/async';
10
- import { Context } from '@dxos/context';
11
- import { SpeakingMonitor } from '@dxos/plugin-thread';
12
-
13
- export const useIsSpeaking = (track?: MediaStreamTrack) => {
14
- const [isSpeaking, setIsSpeaking] = useState(false);
15
- const speakingMonitor = useMemo(() => {
16
- if (!track) {
17
- return;
18
- }
19
- return new SpeakingMonitor(track);
20
- }, [track]);
21
-
22
- useEffect(() => {
23
- if (!speakingMonitor) {
24
- return;
25
- }
26
-
27
- const ctx = new Context();
28
- scheduleTask(ctx, async () => {
29
- speakingMonitor.speakingChanged.on(ctx, () => setIsSpeaking(speakingMonitor.isSpeaking));
30
- await speakingMonitor.open();
31
- ctx.onDispose(() => speakingMonitor.close());
32
- });
33
-
34
- return () => {
35
- void ctx.dispose();
36
- };
37
- }, [speakingMonitor]);
38
-
39
- return isSpeaking;
40
- };
@@ -1,6 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- export { default as open } from './open';
6
- export { default as summarize } from './summarize';
@@ -1,38 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import * as Effect from 'effect/Effect';
6
- import * as Schema from 'effect/Schema';
7
-
8
- import { ArtifactId } from '@dxos/assistant';
9
- import { Obj } from '@dxos/echo';
10
- import { DatabaseService, QueueService, defineFunction } from '@dxos/functions';
11
- import { Message, Transcript } from '@dxos/types';
12
-
13
- import { renderByline } from '../components';
14
-
15
- export default defineFunction({
16
- key: 'dxos.org/function/transcription/open',
17
- name: 'Open',
18
- description: 'Opens and reads the contents of a transcription object.',
19
- inputSchema: Schema.Struct({
20
- id: ArtifactId.annotations({
21
- description: 'The ID of the transcription object.',
22
- }),
23
- }),
24
- outputSchema: Schema.Struct({
25
- content: Schema.String,
26
- }),
27
- handler: Effect.fn(function* ({ data: { id } }) {
28
- const transcript = yield* DatabaseService.resolve(ArtifactId.toDXN(id), Transcript.Transcript);
29
- const { dxn } = yield* Effect.promise(() => transcript.queue.load());
30
- const queue = yield* QueueService.getQueue(dxn);
31
- yield* Effect.promise(() => queue?.queryObjects());
32
- const content = queue?.objects
33
- .filter((message) => Obj.instanceOf(Message.Message, message))
34
- .flatMap((message, index) => renderByline([])(message, index))
35
- .join('\n\n');
36
- return { content };
37
- }),
38
- });