@dxos/plugin-transcription 0.8.4-main.ae835ea → 0.8.4-main.bc2380dfbc

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