@dxos/plugin-transcription 0.8.1 → 0.8.2-main.2f9c567

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 (241) hide show
  1. package/dist/lib/browser/{TranscriptContainer-JQ3HFHLQ.mjs → TranscriptContainer-3LU3XBEB.mjs} +3 -2
  2. package/dist/lib/browser/app-graph-builder-YXELPN6F.mjs +349 -0
  3. package/dist/lib/browser/app-graph-builder-YXELPN6F.mjs.map +7 -0
  4. package/dist/lib/browser/{chunk-YCZISX63.mjs → chunk-GWY2Q2NE.mjs} +108 -81
  5. package/dist/lib/browser/chunk-GWY2Q2NE.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-HNIKXVCG.mjs +720 -0
  7. package/dist/lib/browser/chunk-HNIKXVCG.mjs.map +7 -0
  8. package/dist/lib/browser/chunk-HRDAILQX.mjs +27 -0
  9. package/dist/lib/browser/chunk-HRDAILQX.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-GU2BNYKZ.mjs → chunk-KLD7O5GJ.mjs} +2 -12
  11. package/dist/lib/browser/chunk-KLD7O5GJ.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-YEPT334A.mjs → chunk-LTIQFX4W.mjs} +1 -1
  13. package/dist/lib/browser/chunk-LTIQFX4W.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-TGOKX32G.mjs +63 -0
  15. package/dist/lib/browser/chunk-TGOKX32G.mjs.map +7 -0
  16. package/dist/lib/browser/index.mjs +46 -209
  17. package/dist/lib/browser/index.mjs.map +4 -4
  18. package/dist/lib/browser/{intent-resolver-4R66ZCKT.mjs → intent-resolver-BBB3DWV4.mjs} +8 -8
  19. package/dist/lib/browser/intent-resolver-BBB3DWV4.mjs.map +7 -0
  20. package/dist/lib/browser/{meeting-transcription-state-DLFHQK72.mjs → meeting-transcription-state-MNA2XROE.mjs} +4 -4
  21. package/dist/lib/browser/meeting-transcription-state-MNA2XROE.mjs.map +7 -0
  22. package/dist/lib/browser/meta.json +1 -1
  23. package/dist/lib/browser/{react-surface-FQUHU5G7.mjs → react-surface-R277DACJ.mjs} +18 -6
  24. package/dist/lib/browser/react-surface-R277DACJ.mjs.map +7 -0
  25. package/dist/lib/browser/settings-I226DZ27.mjs +24 -0
  26. package/dist/lib/browser/settings-I226DZ27.mjs.map +7 -0
  27. package/dist/lib/browser/{transcriber-LGMIWDYI.mjs → transcriber-QRSS6X6S.mjs} +8 -7
  28. package/dist/lib/browser/{transcriber-LGMIWDYI.mjs.map → transcriber-QRSS6X6S.mjs.map} +3 -3
  29. package/dist/lib/browser/types/index.mjs +3 -3
  30. package/dist/lib/node/{TranscriptContainer-QEYTTT2V.cjs → TranscriptContainer-DICOMZLM.cjs} +8 -7
  31. package/dist/lib/node/TranscriptContainer-DICOMZLM.cjs.map +7 -0
  32. package/dist/lib/node/app-graph-builder-I6LYVIYY.cjs +350 -0
  33. package/dist/lib/node/app-graph-builder-I6LYVIYY.cjs.map +7 -0
  34. package/dist/lib/node/{chunk-P4VVD6ZO.cjs → chunk-34WFY7M7.cjs} +24 -34
  35. package/dist/lib/node/chunk-34WFY7M7.cjs.map +7 -0
  36. package/dist/lib/node/chunk-4JOJCZPJ.cjs +737 -0
  37. package/dist/lib/node/chunk-4JOJCZPJ.cjs.map +7 -0
  38. package/dist/lib/node/{chunk-3KHUSQNW.cjs → chunk-J72PUQ3C.cjs} +6 -15
  39. package/dist/lib/node/chunk-J72PUQ3C.cjs.map +7 -0
  40. package/dist/lib/node/{chunk-CZMLKKWT.cjs → chunk-JUGOXWES.cjs} +4 -4
  41. package/dist/lib/node/chunk-JUGOXWES.cjs.map +7 -0
  42. package/dist/lib/node/{chunk-LP4FG423.cjs → chunk-K553L7CZ.cjs} +23 -8
  43. package/dist/lib/node/chunk-K553L7CZ.cjs.map +7 -0
  44. package/dist/lib/node/{chunk-FCCJALOT.cjs → chunk-RK4BEN5E.cjs} +111 -83
  45. package/dist/lib/node/chunk-RK4BEN5E.cjs.map +7 -0
  46. package/dist/lib/node/index.cjs +65 -237
  47. package/dist/lib/node/index.cjs.map +4 -4
  48. package/dist/lib/node/{intent-resolver-WMMCOUEH.cjs → intent-resolver-7XY3WITN.cjs} +11 -10
  49. package/dist/lib/node/intent-resolver-7XY3WITN.cjs.map +7 -0
  50. package/dist/lib/node/{meeting-transcription-state-URIYILEQ.cjs → meeting-transcription-state-5XLTMWPA.cjs} +7 -7
  51. package/dist/lib/node/meeting-transcription-state-5XLTMWPA.cjs.map +7 -0
  52. package/dist/lib/node/meta.json +1 -1
  53. package/dist/lib/node/{react-surface-WI2MGWCC.cjs → react-surface-HUSWAORU.cjs} +20 -10
  54. package/dist/lib/node/react-surface-HUSWAORU.cjs.map +7 -0
  55. package/dist/lib/node/settings-NDMU3EWQ.cjs +38 -0
  56. package/dist/lib/node/settings-NDMU3EWQ.cjs.map +7 -0
  57. package/dist/lib/node/{transcriber-QG5WPKX4.cjs → transcriber-UZJMG44C.cjs} +14 -13
  58. package/dist/lib/node/{transcriber-QG5WPKX4.cjs.map → transcriber-UZJMG44C.cjs.map} +3 -3
  59. package/dist/lib/node/types/index.cjs +8 -8
  60. package/dist/lib/node/types/index.cjs.map +1 -1
  61. package/dist/lib/node-esm/{TranscriptContainer-ZXUCOWGY.mjs → TranscriptContainer-K4E4P5T6.mjs} +3 -2
  62. package/dist/lib/node-esm/app-graph-builder-6FY2UQOH.mjs +350 -0
  63. package/dist/lib/node-esm/app-graph-builder-6FY2UQOH.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-3I7AC3D3.mjs +28 -0
  65. package/dist/lib/node-esm/chunk-3I7AC3D3.mjs.map +7 -0
  66. package/dist/lib/node-esm/{chunk-PTZHDZ36.mjs → chunk-5E2MR5XK.mjs} +1 -1
  67. package/dist/lib/node-esm/chunk-5E2MR5XK.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-6C34FO4C.mjs +721 -0
  69. package/dist/lib/node-esm/chunk-6C34FO4C.mjs.map +7 -0
  70. package/dist/lib/node-esm/{chunk-YQYBLFNI.mjs → chunk-CKANLRS4.mjs} +108 -81
  71. package/dist/lib/node-esm/chunk-CKANLRS4.mjs.map +7 -0
  72. package/dist/lib/node-esm/chunk-KUQ3ZTRX.mjs +64 -0
  73. package/dist/lib/node-esm/chunk-KUQ3ZTRX.mjs.map +7 -0
  74. package/dist/lib/node-esm/{chunk-HKATMD34.mjs → chunk-QMHMEKB3.mjs} +2 -12
  75. package/dist/lib/node-esm/chunk-QMHMEKB3.mjs.map +7 -0
  76. package/dist/lib/node-esm/index.mjs +46 -209
  77. package/dist/lib/node-esm/index.mjs.map +4 -4
  78. package/dist/lib/node-esm/{intent-resolver-QN2LO5TX.mjs → intent-resolver-ACGAPLDZ.mjs} +8 -8
  79. package/dist/lib/node-esm/intent-resolver-ACGAPLDZ.mjs.map +7 -0
  80. package/dist/lib/node-esm/{meeting-transcription-state-ZYVRAW6Y.mjs → meeting-transcription-state-3WOZ52BQ.mjs} +4 -4
  81. package/dist/lib/node-esm/meeting-transcription-state-3WOZ52BQ.mjs.map +7 -0
  82. package/dist/lib/node-esm/meta.json +1 -1
  83. package/dist/lib/node-esm/{react-surface-PCH6NTVB.mjs → react-surface-G2OY4MWL.mjs} +18 -6
  84. package/dist/lib/node-esm/react-surface-G2OY4MWL.mjs.map +7 -0
  85. package/dist/lib/node-esm/settings-O7X2UQQG.mjs +25 -0
  86. package/dist/lib/node-esm/settings-O7X2UQQG.mjs.map +7 -0
  87. package/dist/lib/node-esm/{transcriber-TMPYZ5L4.mjs → transcriber-NVVFH7IF.mjs} +8 -7
  88. package/dist/lib/node-esm/{transcriber-TMPYZ5L4.mjs.map → transcriber-NVVFH7IF.mjs.map} +3 -3
  89. package/dist/lib/node-esm/types/index.mjs +3 -3
  90. package/dist/types/src/TranscriptionPlugin.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/capabilities.d.ts +5 -7
  93. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/index.d.ts +2 -4
  95. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/meeting-transcription-state.d.ts +2 -4
  97. package/dist/types/src/capabilities/meeting-transcription-state.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/settings.d.ts +4 -0
  100. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  101. package/dist/types/src/capabilities/transcriber.d.ts.map +1 -1
  102. package/dist/types/src/components/Transcript/Transcript.d.ts +14 -4
  103. package/dist/types/src/components/Transcript/Transcript.d.ts.map +1 -1
  104. package/dist/types/src/components/Transcript/Transcript.stories.d.ts +19 -4
  105. package/dist/types/src/components/Transcript/Transcript.stories.d.ts.map +1 -1
  106. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts +27 -0
  107. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts.map +1 -0
  108. package/dist/types/src/components/Transcript/transcript-extension.d.ts +19 -0
  109. package/dist/types/src/components/Transcript/transcript-extension.d.ts.map +1 -0
  110. package/dist/types/src/components/TranscriptContainer.d.ts.map +1 -1
  111. package/dist/types/src/components/TranscriptionSettings/TranscriptionSettings.d.ts +6 -0
  112. package/dist/types/src/components/TranscriptionSettings/TranscriptionSettings.d.ts.map +1 -0
  113. package/dist/types/src/components/TranscriptionSettings/index.d.ts +2 -0
  114. package/dist/types/src/components/TranscriptionSettings/index.d.ts.map +1 -0
  115. package/dist/types/src/components/index.d.ts +1 -0
  116. package/dist/types/src/components/index.d.ts.map +1 -1
  117. package/dist/types/src/components/transcription.stories.d.ts +6 -3
  118. package/dist/types/src/components/transcription.stories.d.ts.map +1 -1
  119. package/dist/types/src/entity-extraction/entity-extraction.d.ts +42 -0
  120. package/dist/types/src/entity-extraction/entity-extraction.d.ts.map +1 -0
  121. package/dist/types/src/entity-extraction/entity-extraction.test.d.ts +2 -0
  122. package/dist/types/src/entity-extraction/entity-extraction.test.d.ts.map +1 -0
  123. package/dist/types/src/entity-extraction/index.d.ts +2 -0
  124. package/dist/types/src/entity-extraction/index.d.ts.map +1 -0
  125. package/dist/types/src/hooks/index.d.ts +1 -0
  126. package/dist/types/src/hooks/index.d.ts.map +1 -1
  127. package/dist/types/src/hooks/useQueueModelAdapter.d.ts +7 -0
  128. package/dist/types/src/hooks/useQueueModelAdapter.d.ts.map +1 -0
  129. package/dist/types/src/hooks/useTranscriber.d.ts +1 -1
  130. package/dist/types/src/hooks/useTranscriber.d.ts.map +1 -1
  131. package/dist/types/src/model/index.d.ts +2 -0
  132. package/dist/types/src/model/index.d.ts.map +1 -0
  133. package/dist/types/src/model/model.d.ts +68 -0
  134. package/dist/types/src/model/model.d.ts.map +1 -0
  135. package/dist/types/src/model/model.test.d.ts +2 -0
  136. package/dist/types/src/model/model.test.d.ts.map +1 -0
  137. package/dist/types/src/testing/index.d.ts +2 -0
  138. package/dist/types/src/testing/index.d.ts.map +1 -0
  139. package/dist/types/src/testing/testing.d.ts +40 -0
  140. package/dist/types/src/testing/testing.d.ts.map +1 -0
  141. package/dist/types/src/transcriber/transcriber.browser.test.d.ts +2 -0
  142. package/dist/types/src/transcriber/transcriber.browser.test.d.ts.map +1 -0
  143. package/dist/types/src/transcriber/transcriber.d.ts +2 -2
  144. package/dist/types/src/transcriber/transcriber.d.ts.map +1 -1
  145. package/dist/types/src/transcriber/transcription-manager.d.ts +17 -15
  146. package/dist/types/src/transcriber/transcription-manager.d.ts.map +1 -1
  147. package/dist/types/src/translations.d.ts +3 -0
  148. package/dist/types/src/translations.d.ts.map +1 -1
  149. package/dist/types/src/types/schema.d.ts +26 -40
  150. package/dist/types/src/types/schema.d.ts.map +1 -1
  151. package/dist/types/src/types/types.d.ts +11 -7
  152. package/dist/types/src/types/types.d.ts.map +1 -1
  153. package/dist/types/src/util/index.d.ts +0 -1
  154. package/dist/types/src/util/index.d.ts.map +1 -1
  155. package/package.json +53 -40
  156. package/src/TranscriptionPlugin.tsx +29 -12
  157. package/src/capabilities/app-graph-builder.ts +111 -52
  158. package/src/capabilities/capabilities.ts +4 -3
  159. package/src/capabilities/index.ts +1 -0
  160. package/src/capabilities/intent-resolver.ts +5 -5
  161. package/src/capabilities/meeting-transcription-state.ts +2 -2
  162. package/src/capabilities/react-surface.tsx +12 -4
  163. package/src/capabilities/settings.ts +20 -0
  164. package/src/capabilities/transcriber.ts +2 -1
  165. package/src/components/Transcript/Transcript.stories.tsx +201 -43
  166. package/src/components/Transcript/Transcript.tsx +83 -208
  167. package/src/components/Transcript/deprecated/OldTranscript.tsx +260 -0
  168. package/src/components/Transcript/transcript-extension.ts +236 -0
  169. package/src/components/TranscriptContainer.tsx +11 -6
  170. package/src/components/TranscriptionSettings/TranscriptionSettings.tsx +26 -0
  171. package/src/components/TranscriptionSettings/index.ts +5 -0
  172. package/src/components/index.ts +1 -0
  173. package/src/components/transcription.stories.tsx +163 -60
  174. package/src/entity-extraction/entity-extraction.test.ts +97 -0
  175. package/src/entity-extraction/entity-extraction.ts +149 -0
  176. package/src/entity-extraction/index.ts +5 -0
  177. package/src/entity-extraction/system-prompt.tpl +38 -0
  178. package/src/entity-extraction/types.d.ts +8 -0
  179. package/src/hooks/index.ts +1 -0
  180. package/src/hooks/useQueueModelAdapter.ts +63 -0
  181. package/src/hooks/useTranscriber.ts +3 -2
  182. package/src/model/index.ts +5 -0
  183. package/src/model/model.test.ts +169 -0
  184. package/src/model/model.ts +229 -0
  185. package/src/testing/index.ts +5 -0
  186. package/src/testing/testing.ts +221 -0
  187. package/src/transcriber/{transcriber.test.ts → transcriber.browser.test.ts} +3 -3
  188. package/src/transcriber/transcriber.ts +20 -11
  189. package/src/transcriber/transcription-manager.ts +67 -58
  190. package/src/translations.ts +2 -0
  191. package/src/types/schema.ts +11 -32
  192. package/src/types/types.ts +19 -9
  193. package/src/util/index.ts +0 -1
  194. package/dist/lib/browser/app-graph-builder-VDQOVX7P.mjs +0 -191
  195. package/dist/lib/browser/app-graph-builder-VDQOVX7P.mjs.map +0 -7
  196. package/dist/lib/browser/chunk-G4B6CPC2.mjs +0 -253
  197. package/dist/lib/browser/chunk-G4B6CPC2.mjs.map +0 -7
  198. package/dist/lib/browser/chunk-GU2BNYKZ.mjs.map +0 -7
  199. package/dist/lib/browser/chunk-K7FOYAXO.mjs +0 -8
  200. package/dist/lib/browser/chunk-K7FOYAXO.mjs.map +0 -7
  201. package/dist/lib/browser/chunk-OGNXNGJB.mjs +0 -73
  202. package/dist/lib/browser/chunk-OGNXNGJB.mjs.map +0 -7
  203. package/dist/lib/browser/chunk-YCZISX63.mjs.map +0 -7
  204. package/dist/lib/browser/chunk-YEPT334A.mjs.map +0 -7
  205. package/dist/lib/browser/intent-resolver-4R66ZCKT.mjs.map +0 -7
  206. package/dist/lib/browser/meeting-transcription-state-DLFHQK72.mjs.map +0 -7
  207. package/dist/lib/browser/react-surface-FQUHU5G7.mjs.map +0 -7
  208. package/dist/lib/node/TranscriptContainer-QEYTTT2V.cjs.map +0 -7
  209. package/dist/lib/node/app-graph-builder-IFSIVNUR.cjs +0 -200
  210. package/dist/lib/node/app-graph-builder-IFSIVNUR.cjs.map +0 -7
  211. package/dist/lib/node/chunk-3KHUSQNW.cjs.map +0 -7
  212. package/dist/lib/node/chunk-CZMLKKWT.cjs.map +0 -7
  213. package/dist/lib/node/chunk-FCCJALOT.cjs.map +0 -7
  214. package/dist/lib/node/chunk-LP4FG423.cjs.map +0 -7
  215. package/dist/lib/node/chunk-P4VVD6ZO.cjs.map +0 -7
  216. package/dist/lib/node/chunk-UOFHT4GZ.cjs +0 -280
  217. package/dist/lib/node/chunk-UOFHT4GZ.cjs.map +0 -7
  218. package/dist/lib/node/intent-resolver-WMMCOUEH.cjs.map +0 -7
  219. package/dist/lib/node/meeting-transcription-state-URIYILEQ.cjs.map +0 -7
  220. package/dist/lib/node/react-surface-WI2MGWCC.cjs.map +0 -7
  221. package/dist/lib/node-esm/app-graph-builder-UL6XLIZY.mjs +0 -192
  222. package/dist/lib/node-esm/app-graph-builder-UL6XLIZY.mjs.map +0 -7
  223. package/dist/lib/node-esm/chunk-6X7X2UZF.mjs +0 -254
  224. package/dist/lib/node-esm/chunk-6X7X2UZF.mjs.map +0 -7
  225. package/dist/lib/node-esm/chunk-GIO6J6FE.mjs +0 -74
  226. package/dist/lib/node-esm/chunk-GIO6J6FE.mjs.map +0 -7
  227. package/dist/lib/node-esm/chunk-HKATMD34.mjs.map +0 -7
  228. package/dist/lib/node-esm/chunk-J4D2RBBH.mjs +0 -10
  229. package/dist/lib/node-esm/chunk-J4D2RBBH.mjs.map +0 -7
  230. package/dist/lib/node-esm/chunk-PTZHDZ36.mjs.map +0 -7
  231. package/dist/lib/node-esm/chunk-YQYBLFNI.mjs.map +0 -7
  232. package/dist/lib/node-esm/intent-resolver-QN2LO5TX.mjs.map +0 -7
  233. package/dist/lib/node-esm/meeting-transcription-state-ZYVRAW6Y.mjs.map +0 -7
  234. package/dist/lib/node-esm/react-surface-PCH6NTVB.mjs.map +0 -7
  235. package/dist/types/src/transcriber/transcriber.test.d.ts +0 -2
  236. package/dist/types/src/transcriber/transcriber.test.d.ts.map +0 -1
  237. package/dist/types/src/util/random-queue-dxn.d.ts +0 -3
  238. package/dist/types/src/util/random-queue-dxn.d.ts.map +0 -1
  239. package/src/util/random-queue-dxn.ts +0 -9
  240. /package/dist/lib/browser/{TranscriptContainer-JQ3HFHLQ.mjs.map → TranscriptContainer-3LU3XBEB.mjs.map} +0 -0
  241. /package/dist/lib/node-esm/{TranscriptContainer-ZXUCOWGY.mjs.map → TranscriptContainer-K4E4P5T6.mjs.map} +0 -0
@@ -1,222 +1,48 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
- TranscriptContainer
4
- } from "./chunk-J4D2RBBH.mjs";
3
+ TranscriptContainer,
4
+ TranscriptionSettings
5
+ } from "./chunk-3I7AC3D3.mjs";
5
6
  import {
7
+ AppGraphBuilder,
8
+ IntentResolver,
9
+ MeetingTranscriptionState,
10
+ ReactSurface,
11
+ Settings,
12
+ Transcriber as Transcriber2,
6
13
  Transcript,
7
- TranscriptionContainer
8
- } from "./chunk-6X7X2UZF.mjs";
14
+ TranscriptionContainer,
15
+ renderMarkdown,
16
+ useAudioFile,
17
+ useAudioTrack,
18
+ useQueueModelAdapter,
19
+ useTranscriber,
20
+ useVoiceInput
21
+ } from "./chunk-6C34FO4C.mjs";
9
22
  import {
10
23
  MediaStreamRecorder,
11
24
  Transcriber,
12
25
  TranscriptionManager
13
- } from "./chunk-YQYBLFNI.mjs";
14
- import "./chunk-HKATMD34.mjs";
26
+ } from "./chunk-CKANLRS4.mjs";
27
+ import "./chunk-QMHMEKB3.mjs";
15
28
  import {
16
- TranscriptionCapabilities
17
- } from "./chunk-PTZHDZ36.mjs";
18
- import {
19
- TranscriptBlock,
20
29
  TranscriptType
21
- } from "./chunk-GIO6J6FE.mjs";
30
+ } from "./chunk-KUQ3ZTRX.mjs";
31
+ import {
32
+ TranscriptionCapabilities
33
+ } from "./chunk-5E2MR5XK.mjs";
22
34
  import {
23
35
  TRANSCRIPTION_PLUGIN,
24
36
  meta
25
37
  } from "./chunk-X4DDJIVL.mjs";
26
38
 
27
- // packages/plugins/plugin-transcription/src/capabilities/index.ts
28
- import { lazy } from "@dxos/app-framework";
29
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-UL6XLIZY.mjs"));
30
- var IntentResolver = lazy(() => import("./intent-resolver-QN2LO5TX.mjs"));
31
- var MeetingTranscriptionState = lazy(() => import("./meeting-transcription-state-ZYVRAW6Y.mjs"));
32
- var ReactSurface = lazy(() => import("./react-surface-PCH6NTVB.mjs"));
33
- var Transcriber2 = lazy(() => import("./transcriber-TMPYZ5L4.mjs"));
34
-
35
- // packages/plugins/plugin-transcription/src/hooks/useAudioFile.ts
36
- import { useEffect, useState } from "react";
37
- import { log } from "@dxos/log";
38
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-transcription/src/hooks/useAudioFile.ts";
39
- var useAudioFile = (audioUrl) => {
40
- const [{ audio, stream, track }, setStream] = useState({});
41
- useEffect(() => {
42
- const t = setTimeout(async () => {
43
- const response = await fetch(audioUrl);
44
- const blob = await response.blob();
45
- const audio2 = new Audio();
46
- audio2.src = URL.createObjectURL(blob);
47
- await new Promise((resolve, reject) => {
48
- audio2.addEventListener("error", (err) => {
49
- log.error("error", {
50
- err
51
- }, {
52
- F: __dxlog_file,
53
- L: 27,
54
- S: void 0,
55
- C: (f, a) => f(...a)
56
- });
57
- reject(err);
58
- }, {
59
- once: true
60
- });
61
- audio2.addEventListener("canplay", () => {
62
- log.info("starting...", void 0, {
63
- F: __dxlog_file,
64
- L: 35,
65
- S: void 0,
66
- C: (f, a) => f(...a)
67
- });
68
- resolve();
69
- }, {
70
- once: true
71
- });
72
- audio2.load();
73
- });
74
- const ctx = new AudioContext();
75
- const destination = ctx.createMediaStreamDestination();
76
- destination.channelCount = 1;
77
- const source = ctx.createMediaElementSource(audio2);
78
- source.connect(destination);
79
- setStream({
80
- audio: audio2,
81
- stream: destination.stream,
82
- track: destination.stream.getAudioTracks()[0]
83
- });
84
- });
85
- return () => clearTimeout(t);
86
- }, [
87
- audioUrl
88
- ]);
89
- return {
90
- audio,
91
- stream,
92
- track
93
- };
94
- };
95
-
96
- // packages/plugins/plugin-transcription/src/hooks/useAudioTrack.ts
97
- import { useEffect as useEffect2, useState as useState2 } from "react";
98
- var useAudioTrack = (active) => {
99
- const [track, setTrack] = useState2();
100
- useEffect2(() => {
101
- if (!active) {
102
- track?.stop();
103
- setTrack(void 0);
104
- return;
105
- }
106
- const initAudio = async () => {
107
- const audio = new Audio();
108
- audio.srcObject = await navigator.mediaDevices.getUserMedia({
109
- audio: true
110
- });
111
- const [track2] = audio.srcObject.getAudioTracks();
112
- if (track2) {
113
- setTrack(track2);
114
- }
115
- };
116
- if (active) {
117
- void initAudio();
118
- }
119
- }, [
120
- active
121
- ]);
122
- return track;
123
- };
124
-
125
- // packages/plugins/plugin-transcription/src/hooks/useTranscriber.ts
126
- import { useEffect as useEffect3, useMemo } from "react";
127
- import { useCapabilities } from "@dxos/app-framework";
128
- var useTranscriber = ({ audioStreamTrack, onSegments }) => {
129
- const [getTranscriber] = useCapabilities(TranscriptionCapabilities.Transcriber);
130
- const transcriber = useMemo(() => {
131
- if (!onSegments || !audioStreamTrack || !getTranscriber) {
132
- return void 0;
133
- }
134
- return getTranscriber({
135
- audioStreamTrack,
136
- onSegments
137
- });
138
- }, [
139
- audioStreamTrack,
140
- onSegments,
141
- getTranscriber
142
- ]);
143
- useEffect3(() => {
144
- return () => {
145
- void transcriber?.close();
146
- };
147
- }, [
148
- transcriber
149
- ]);
150
- return transcriber;
151
- };
152
-
153
- // packages/plugins/plugin-transcription/src/hooks/useVoiceInput.ts
154
- import { useState as useState3, useEffect as useEffect4, useCallback } from "react";
155
- import { scheduleMicroTask } from "@dxos/async";
156
- import { Context } from "@dxos/context";
157
- import { log as log2 } from "@dxos/log";
158
- import { useSoundEffect } from "@dxos/react-ui-sfx";
159
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-transcription/src/hooks/useVoiceInput.ts";
160
- var useVoiceInput = ({ active, onUpdate }) => {
161
- const soundStart = useSoundEffect("StartRecording");
162
- const soundStop = useSoundEffect("StopRecording");
163
- const handleSegments = useCallback(async (segments) => {
164
- const text = segments.map((str) => str.text.trim().replace(/[^\w\s]/g, "")).join(" ");
165
- onUpdate(text);
166
- }, []);
167
- const [recording, setRecording] = useState3(false);
168
- const track = useAudioTrack(active);
169
- const transcriber = useTranscriber({
170
- audioStreamTrack: track,
171
- onSegments: handleSegments
172
- });
173
- useEffect4(() => {
174
- const ctx = new Context(void 0, {
175
- F: __dxlog_file2,
176
- L: 43
177
- });
178
- scheduleMicroTask(ctx, async () => {
179
- if (active && transcriber) {
180
- await transcriber.open();
181
- log2.info("starting...", void 0, {
182
- F: __dxlog_file2,
183
- L: 47,
184
- S: void 0,
185
- C: (f, a) => f(...a)
186
- });
187
- setRecording(true);
188
- void soundStart.play();
189
- transcriber.startChunksRecording();
190
- } else if (!active && transcriber?.isOpen) {
191
- transcriber?.stopChunksRecording();
192
- await transcriber?.close();
193
- log2.info("stopped", void 0, {
194
- F: __dxlog_file2,
195
- L: 54,
196
- S: void 0,
197
- C: (f, a) => f(...a)
198
- });
199
- setRecording(false);
200
- void soundStop.play();
201
- }
202
- });
203
- return () => {
204
- void ctx.dispose();
205
- };
206
- }, [
207
- active,
208
- transcriber
209
- ]);
210
- return {
211
- recording
212
- };
213
- };
214
-
215
39
  // packages/plugins/plugin-transcription/src/TranscriptionPlugin.tsx
216
40
  import { Capabilities, Events, contributes, defineModule, definePlugin } from "@dxos/app-framework";
217
41
  import { QueueImpl } from "@dxos/echo-db";
218
42
  import { isInstanceOf } from "@dxos/echo-schema";
219
43
  import { ClientCapabilities, ClientEvents } from "@dxos/plugin-client";
44
+ import { getSpace } from "@dxos/react-client/echo";
45
+ import { DataType } from "@dxos/schema";
220
46
 
221
47
  // packages/plugins/plugin-transcription/src/translations.ts
222
48
  var translations_default = [
@@ -233,7 +59,8 @@ var translations_default = [
233
59
  "stop transcription label": "Stop transcription",
234
60
  "delete button": "Delete",
235
61
  "bookmark button": "Bookmark",
236
- "scroll to end label": "Scroll to latest"
62
+ "scroll to end label": "Scroll to latest",
63
+ "settings entity extraction label": "Entity extraction"
237
64
  }
238
65
  }
239
66
  }
@@ -247,14 +74,9 @@ var TranscriptionPlugin = () => definePlugin(meta, [
247
74
  activate: () => contributes(Capabilities.Translations, translations_default)
248
75
  }),
249
76
  defineModule({
250
- id: `${meta.id}/module/transcription`,
251
- activatesOn: Events.SetupAppGraph,
252
- activate: Transcriber2
253
- }),
254
- defineModule({
255
- id: `${meta.id}/module/meeting-transcription-state`,
256
- activatesOn: Events.SetupAppGraph,
257
- activate: MeetingTranscriptionState
77
+ id: `${meta.id}/module/settings`,
78
+ activatesOn: Events.SetupSettings,
79
+ activate: Settings
258
80
  }),
259
81
  defineModule({
260
82
  id: `${meta.id}/module/metadata`,
@@ -266,9 +88,11 @@ var TranscriptionPlugin = () => definePlugin(meta, [
266
88
  // TODO(wittjosiah): Factor out. Artifact? Separate capability?
267
89
  getTextContent: async (transcript) => {
268
90
  const client = context.requestCapability(ClientCapabilities.Client);
91
+ const space = getSpace(transcript);
92
+ const members = space?.members.get().map((member) => member.identity) ?? [];
269
93
  const queue = new QueueImpl(client.edge, transcript.queue.dxn);
270
94
  await queue.refresh();
271
- const content = queue.items.filter((block) => isInstanceOf(TranscriptBlock, block)).map((block) => `${block.authorName}: ${block.segments.map((segment) => segment.text).join("\n")}`).join("\n\n");
95
+ const content = queue.items.filter((message) => isInstanceOf(DataType.Message, message)).flatMap((message, index) => renderMarkdown(members)(message, index)).join("\n\n");
272
96
  return content;
273
97
  }
274
98
  }
@@ -297,6 +121,16 @@ var TranscriptionPlugin = () => definePlugin(meta, [
297
121
  id: `${meta.id}/module/app-graph-builder`,
298
122
  activatesOn: Events.SetupAppGraph,
299
123
  activate: AppGraphBuilder
124
+ }),
125
+ defineModule({
126
+ id: `${meta.id}/module/transcription`,
127
+ activatesOn: Events.SetupAppGraph,
128
+ activate: Transcriber2
129
+ }),
130
+ defineModule({
131
+ id: `${meta.id}/module/meeting-transcription-state`,
132
+ activatesOn: Events.SetupAppGraph,
133
+ activate: MeetingTranscriptionState
300
134
  })
301
135
  ]);
302
136
  export {
@@ -309,9 +143,12 @@ export {
309
143
  TranscriptionContainer,
310
144
  TranscriptionManager,
311
145
  TranscriptionPlugin,
146
+ TranscriptionSettings,
312
147
  meta,
148
+ renderMarkdown,
313
149
  useAudioFile,
314
150
  useAudioTrack,
151
+ useQueueModelAdapter,
315
152
  useTranscriber,
316
153
  useVoiceInput
317
154
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/capabilities/index.ts", "../../../src/hooks/useAudioFile.ts", "../../../src/hooks/useAudioTrack.ts", "../../../src/hooks/useTranscriber.ts", "../../../src/hooks/useVoiceInput.ts", "../../../src/TranscriptionPlugin.tsx", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const MeetingTranscriptionState = lazy(() => import('./meeting-transcription-state'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const Transcriber = lazy(() => import('./transcriber'));\n\nexport * from './capabilities';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { log } from '@dxos/log';\n\nexport type UseAudioState = {\n audio?: HTMLAudioElement;\n stream?: MediaStream;\n track?: MediaStreamTrack;\n};\n\nexport const useAudioFile = (audioUrl: string): UseAudioState => {\n const [{ audio, stream, track }, setStream] = useState<UseAudioState>({});\n useEffect(() => {\n const t = setTimeout(async () => {\n const response = await fetch(audioUrl);\n const blob = await response.blob();\n const audio = new Audio();\n audio.src = URL.createObjectURL(blob);\n await new Promise<void>((resolve, reject) => {\n audio.addEventListener(\n 'error',\n (err) => {\n log.error('error', { err });\n reject(err);\n },\n { once: true },\n );\n audio.addEventListener(\n 'canplay',\n () => {\n log.info('starting...');\n resolve();\n },\n { once: true },\n );\n audio.load();\n });\n\n const ctx = new AudioContext();\n\n const destination = ctx.createMediaStreamDestination();\n destination.channelCount = 1;\n\n const source = ctx.createMediaElementSource(audio);\n source.connect(destination);\n\n setStream({\n audio,\n stream: destination.stream,\n track: destination.stream.getAudioTracks()[0],\n });\n });\n\n return () => clearTimeout(t);\n }, [audioUrl]);\n\n return { audio, stream, track };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\n/**\n *\n */\n// TODO(burdon): Reconcile with react-ui-sfx and plugin-calls.\nexport const useAudioTrack = (active?: boolean): MediaStreamTrack | undefined => {\n const [track, setTrack] = useState<MediaStreamTrack>();\n useEffect(() => {\n if (!active) {\n track?.stop();\n setTrack(undefined);\n return;\n }\n\n const initAudio = async () => {\n const audio = new Audio();\n audio.srcObject = await navigator.mediaDevices.getUserMedia({ audio: true });\n const [track] = audio.srcObject.getAudioTracks();\n if (track) {\n setTrack(track);\n }\n };\n\n if (active) {\n void initAudio();\n }\n }, [active]);\n\n return track;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo } from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework';\n\nimport { TranscriptionCapabilities } from '../capabilities';\nimport { type Transcriber } from '../transcriber';\n\n/**\n * Records audio while user is speaking and transcribes it after user is done speaking.\n */\nexport const useTranscriber = ({\n audioStreamTrack,\n onSegments,\n}: Partial<TranscriptionCapabilities.GetTranscriberProps>) => {\n const [getTranscriber] = useCapabilities(TranscriptionCapabilities.Transcriber);\n\n // Initialize audio transcription.\n const transcriber = useMemo<Transcriber | undefined>(() => {\n if (!onSegments || !audioStreamTrack || !getTranscriber) {\n return undefined;\n }\n\n return getTranscriber({ audioStreamTrack, onSegments });\n }, [audioStreamTrack, onSegments, getTranscriber]);\n\n useEffect(() => {\n return () => {\n void transcriber?.close();\n };\n }, [transcriber]);\n\n return transcriber;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useState, useEffect, useCallback } from 'react';\n\nimport { scheduleMicroTask } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { log } from '@dxos/log';\nimport { useSoundEffect } from '@dxos/react-ui-sfx';\n\nimport { useAudioTrack } from './useAudioTrack';\nimport { useTranscriber } from './useTranscriber';\nimport { type TranscriberParams } from '../transcriber';\n\nexport type UseVoiceInputProps = {\n active?: boolean;\n onUpdate: (text: string) => void;\n};\n\n/**\n * Hook for voice input.\n */\nexport const useVoiceInput = ({ active, onUpdate }: UseVoiceInputProps) => {\n const soundStart = useSoundEffect('StartRecording');\n const soundStop = useSoundEffect('StopRecording');\n\n const handleSegments = useCallback<TranscriberParams['onSegments']>(async (segments) => {\n const text = segments.map((str) => str.text.trim().replace(/[^\\w\\s]/g, '')).join(' ');\n onUpdate(text);\n }, []);\n\n // Audio/transcription.\n const [recording, setRecording] = useState(false);\n const track = useAudioTrack(active);\n const transcriber = useTranscriber({\n audioStreamTrack: track,\n onSegments: handleSegments,\n });\n\n // Start/stop transcription.\n useEffect(() => {\n const ctx = new Context();\n scheduleMicroTask(ctx, async () => {\n if (active && transcriber) {\n await transcriber.open();\n log.info('starting...');\n setRecording(true);\n void soundStart.play();\n transcriber.startChunksRecording();\n } else if (!active && transcriber?.isOpen) {\n transcriber?.stopChunksRecording();\n await transcriber?.close();\n log.info('stopped');\n setRecording(false);\n void soundStop.play();\n }\n });\n\n return () => {\n void ctx.dispose();\n };\n }, [active, transcriber]);\n\n return { recording };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, Events, contributes, defineModule, definePlugin } from '@dxos/app-framework';\nimport { QueueImpl } from '@dxos/echo-db';\nimport { isInstanceOf } from '@dxos/echo-schema';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\n\nimport { AppGraphBuilder, IntentResolver, MeetingTranscriptionState, ReactSurface, Transcriber } from './capabilities';\nimport { meta } from './meta';\nimport translations from './translations';\nimport { TranscriptBlock, TranscriptType } from './types';\n\nexport const TranscriptionPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/transcription`,\n activatesOn: Events.SetupAppGraph,\n activate: Transcriber,\n }),\n defineModule({\n id: `${meta.id}/module/meeting-transcription-state`,\n activatesOn: Events.SetupAppGraph,\n activate: MeetingTranscriptionState,\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: (context) =>\n contributes(Capabilities.Metadata, {\n id: TranscriptType.typename,\n metadata: {\n icon: 'ph--subtitles--regular',\n // TODO(wittjosiah): Factor out. Artifact? Separate capability?\n getTextContent: async (transcript: TranscriptType) => {\n const client = context.requestCapability(ClientCapabilities.Client);\n const queue = new QueueImpl(client.edge, transcript.queue.dxn);\n await queue.refresh();\n const content = queue.items\n .filter((block) => isInstanceOf(TranscriptBlock, block))\n .map((block) => `${block.authorName}: ${block.segments.map((segment) => segment.text).join('\\n')}`)\n .join('\\n\\n');\n return content;\n },\n },\n }),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => [contributes(ClientCapabilities.Schema, [TranscriptType])],\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { TRANSCRIPTION_PLUGIN } from './meta';\nimport { TranscriptType } from './types';\n\nexport default [\n {\n 'en-US': {\n [TranscriptType.typename]: {\n 'typename label': 'Transcript',\n 'object name placeholder': 'New transcript',\n },\n [TRANSCRIPTION_PLUGIN]: {\n 'plugin name': 'Transcription',\n 'transcript companion label': 'Transcript',\n\n 'start transcription label': 'Start transcription',\n 'stop transcription label': 'Stop transcription',\n\n 'delete button': 'Delete',\n 'bookmark button': 'Bookmark',\n 'scroll to end label': 'Scroll to latest',\n },\n },\n },\n];\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,iBAAiBD,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAME,4BAA4BF,KAAK,MAAM,OAAO,4CAAA,CAAA;AACpD,IAAMG,eAAeH,KAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMI,eAAcJ,KAAK,MAAM,OAAO,4BAAA,CAAA;;;ACN7C,SAASK,WAAWC,gBAAgB;AAEpC,SAASC,WAAW;;AAQb,IAAMC,eAAe,CAACC,aAAAA;AAC3B,QAAM,CAAC,EAAEC,OAAOC,QAAQC,MAAK,GAAIC,SAAAA,IAAaP,SAAwB,CAAC,CAAA;AACvED,YAAU,MAAA;AACR,UAAMS,IAAIC,WAAW,YAAA;AACnB,YAAMC,WAAW,MAAMC,MAAMR,QAAAA;AAC7B,YAAMS,OAAO,MAAMF,SAASE,KAAI;AAChC,YAAMR,SAAQ,IAAIS,MAAAA;AAClBT,MAAAA,OAAMU,MAAMC,IAAIC,gBAAgBJ,IAAAA;AAChC,YAAM,IAAIK,QAAc,CAACC,SAASC,WAAAA;AAChCf,QAAAA,OAAMgB,iBACJ,SACA,CAACC,QAAAA;AACCpB,cAAIqB,MAAM,SAAS;YAAED;UAAI,GAAA;;;;;;AACzBF,iBAAOE,GAAAA;QACT,GACA;UAAEE,MAAM;QAAK,CAAA;AAEfnB,QAAAA,OAAMgB,iBACJ,WACA,MAAA;AACEnB,cAAIuB,KAAK,eAAA,QAAA;;;;;;AACTN,kBAAAA;QACF,GACA;UAAEK,MAAM;QAAK,CAAA;AAEfnB,QAAAA,OAAMqB,KAAI;MACZ,CAAA;AAEA,YAAMC,MAAM,IAAIC,aAAAA;AAEhB,YAAMC,cAAcF,IAAIG,6BAA4B;AACpDD,kBAAYE,eAAe;AAE3B,YAAMC,SAASL,IAAIM,yBAAyB5B,MAAAA;AAC5C2B,aAAOE,QAAQL,WAAAA;AAEfrB,gBAAU;QACRH,OAAAA;QACAC,QAAQuB,YAAYvB;QACpBC,OAAOsB,YAAYvB,OAAO6B,eAAc,EAAG,CAAA;MAC7C,CAAA;IACF,CAAA;AAEA,WAAO,MAAMC,aAAa3B,CAAAA;EAC5B,GAAG;IAACL;GAAS;AAEb,SAAO;IAAEC;IAAOC;IAAQC;EAAM;AAChC;;;ACzDA,SAAS8B,aAAAA,YAAWC,YAAAA,iBAAgB;AAM7B,IAAMC,gBAAgB,CAACC,WAAAA;AAC5B,QAAM,CAACC,OAAOC,QAAAA,IAAYC,UAAAA;AAC1BC,EAAAA,WAAU,MAAA;AACR,QAAI,CAACJ,QAAQ;AACXC,aAAOI,KAAAA;AACPH,eAASI,MAAAA;AACT;IACF;AAEA,UAAMC,YAAY,YAAA;AAChB,YAAMC,QAAQ,IAAIC,MAAAA;AAClBD,YAAME,YAAY,MAAMC,UAAUC,aAAaC,aAAa;QAAEL,OAAO;MAAK,CAAA;AAC1E,YAAM,CAACP,MAAAA,IAASO,MAAME,UAAUI,eAAc;AAC9C,UAAIb,QAAO;AACTC,iBAASD,MAAAA;MACX;IACF;AAEA,QAAID,QAAQ;AACV,WAAKO,UAAAA;IACP;EACF,GAAG;IAACP;GAAO;AAEX,SAAOC;AACT;;;AC9BA,SAASc,aAAAA,YAAWC,eAAe;AAEnC,SAASC,uBAAuB;AAQzB,IAAMC,iBAAiB,CAAC,EAC7BC,kBACAC,WAAU,MAC6C;AACvD,QAAM,CAACC,cAAAA,IAAkBC,gBAAgBC,0BAA0BC,WAAW;AAG9E,QAAMC,cAAcC,QAAiC,MAAA;AACnD,QAAI,CAACN,cAAc,CAACD,oBAAoB,CAACE,gBAAgB;AACvD,aAAOM;IACT;AAEA,WAAON,eAAe;MAAEF;MAAkBC;IAAW,CAAA;EACvD,GAAG;IAACD;IAAkBC;IAAYC;GAAe;AAEjDO,EAAAA,WAAU,MAAA;AACR,WAAO,MAAA;AACL,WAAKH,aAAaI,MAAAA;IACpB;EACF,GAAG;IAACJ;GAAY;AAEhB,SAAOA;AACT;;;AChCA,SAASK,YAAAA,WAAUC,aAAAA,YAAWC,mBAAmB;AAEjD,SAASC,yBAAyB;AAClC,SAASC,eAAe;AACxB,SAASC,OAAAA,YAAW;AACpB,SAASC,sBAAsB;;AAcxB,IAAMC,gBAAgB,CAAC,EAAEC,QAAQC,SAAQ,MAAsB;AACpE,QAAMC,aAAaC,eAAe,gBAAA;AAClC,QAAMC,YAAYD,eAAe,eAAA;AAEjC,QAAME,iBAAiBC,YAA6C,OAAOC,aAAAA;AACzE,UAAMC,OAAOD,SAASE,IAAI,CAACC,QAAQA,IAAIF,KAAKG,KAAI,EAAGC,QAAQ,YAAY,EAAA,CAAA,EAAKC,KAAK,GAAA;AACjFZ,aAASO,IAAAA;EACX,GAAG,CAAA,CAAE;AAGL,QAAM,CAACM,WAAWC,YAAAA,IAAgBC,UAAS,KAAA;AAC3C,QAAMC,QAAQC,cAAclB,MAAAA;AAC5B,QAAMmB,cAAcC,eAAe;IACjCC,kBAAkBJ;IAClBK,YAAYjB;EACd,CAAA;AAGAkB,EAAAA,WAAU,MAAA;AACR,UAAMC,MAAM,IAAIC,QAAAA,QAAAA;;;;AAChBC,sBAAkBF,KAAK,YAAA;AACrB,UAAIxB,UAAUmB,aAAa;AACzB,cAAMA,YAAYQ,KAAI;AACtBC,QAAAA,KAAIC,KAAK,eAAA,QAAA;;;;;;AACTd,qBAAa,IAAA;AACb,aAAKb,WAAW4B,KAAI;AACpBX,oBAAYY,qBAAoB;MAClC,WAAW,CAAC/B,UAAUmB,aAAaa,QAAQ;AACzCb,qBAAac,oBAAAA;AACb,cAAMd,aAAae,MAAAA;AACnBN,QAAAA,KAAIC,KAAK,WAAA,QAAA;;;;;;AACTd,qBAAa,KAAA;AACb,aAAKX,UAAU0B,KAAI;MACrB;IACF,CAAA;AAEA,WAAO,MAAA;AACL,WAAKN,IAAIW,QAAO;IAClB;EACF,GAAG;IAACnC;IAAQmB;GAAY;AAExB,SAAO;IAAEL;EAAU;AACrB;;;AC7DA,SAASsB,cAAcC,QAAQC,aAAaC,cAAcC,oBAAoB;AAC9E,SAASC,iBAAiB;AAC1B,SAASC,oBAAoB;AAC7B,SAASC,oBAAoBC,oBAAoB;;;ACAjD,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACC,eAAeC,QAAQ,GAAG;QACzB,kBAAkB;QAClB,2BAA2B;MAC7B;MACA,CAACC,oBAAAA,GAAuB;QACtB,eAAe;QACf,8BAA8B;QAE9B,6BAA6B;QAC7B,4BAA4B;QAE5B,iBAAiB;QACjB,mBAAmB;QACnB,uBAAuB;MACzB;IACF;EACF;;;;ADZK,IAAMC,sBAAsB,MACjCC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,UAAU,MAAMC,YAAYC,aAAaC,cAAcC,oBAAAA;EACzD,CAAA;EACAT,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOO;IACpBL,UAAUM;EACZ,CAAA;EACAX,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOO;IACpBL,UAAUO;EACZ,CAAA;EACAZ,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOU;IACpBR,UAAU,CAACS,YACTR,YAAYC,aAAaQ,UAAU;MACjCd,IAAIe,eAAeC;MACnBC,UAAU;QACRC,MAAM;;QAENC,gBAAgB,OAAOC,eAAAA;AACrB,gBAAMC,SAASR,QAAQS,kBAAkBC,mBAAmBC,MAAM;AAClE,gBAAMC,QAAQ,IAAIC,UAAUL,OAAOM,MAAMP,WAAWK,MAAMG,GAAG;AAC7D,gBAAMH,MAAMI,QAAO;AACnB,gBAAMC,UAAUL,MAAMM,MACnBC,OAAO,CAACC,UAAUC,aAAaC,iBAAiBF,KAAAA,CAAAA,EAChDG,IAAI,CAACH,UAAU,GAAGA,MAAMI,UAAU,KAAKJ,MAAMK,SAASF,IAAI,CAACG,YAAYA,QAAQC,IAAI,EAAEC,KAAK,IAAA,CAAA,EAAO,EACjGA,KAAK,MAAA;AACR,iBAAOX;QACT;MACF;IACF,CAAA;EACJ,CAAA;EACA/B,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAayC,aAAaC;IAC1BvC,UAAU,MAAM;MAACC,YAAYkB,mBAAmBqB,QAAQ;QAAC7B;OAAe;;EAC1E,CAAA;EACAhB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAO2C;IACpBzC,UAAU0C;EACZ,CAAA;EACA/C,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAO6C;IACpB3C,UAAU4C;EACZ,CAAA;EACAjD,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOO;IACpBL,UAAU6C;EACZ,CAAA;CACD;",
6
- "names": ["lazy", "AppGraphBuilder", "lazy", "IntentResolver", "MeetingTranscriptionState", "ReactSurface", "Transcriber", "useEffect", "useState", "log", "useAudioFile", "audioUrl", "audio", "stream", "track", "setStream", "t", "setTimeout", "response", "fetch", "blob", "Audio", "src", "URL", "createObjectURL", "Promise", "resolve", "reject", "addEventListener", "err", "error", "once", "info", "load", "ctx", "AudioContext", "destination", "createMediaStreamDestination", "channelCount", "source", "createMediaElementSource", "connect", "getAudioTracks", "clearTimeout", "useEffect", "useState", "useAudioTrack", "active", "track", "setTrack", "useState", "useEffect", "stop", "undefined", "initAudio", "audio", "Audio", "srcObject", "navigator", "mediaDevices", "getUserMedia", "getAudioTracks", "useEffect", "useMemo", "useCapabilities", "useTranscriber", "audioStreamTrack", "onSegments", "getTranscriber", "useCapabilities", "TranscriptionCapabilities", "Transcriber", "transcriber", "useMemo", "undefined", "useEffect", "close", "useState", "useEffect", "useCallback", "scheduleMicroTask", "Context", "log", "useSoundEffect", "useVoiceInput", "active", "onUpdate", "soundStart", "useSoundEffect", "soundStop", "handleSegments", "useCallback", "segments", "text", "map", "str", "trim", "replace", "join", "recording", "setRecording", "useState", "track", "useAudioTrack", "transcriber", "useTranscriber", "audioStreamTrack", "onSegments", "useEffect", "ctx", "Context", "scheduleMicroTask", "open", "log", "info", "play", "startChunksRecording", "isOpen", "stopChunksRecording", "close", "dispose", "Capabilities", "Events", "contributes", "defineModule", "definePlugin", "QueueImpl", "isInstanceOf", "ClientCapabilities", "ClientEvents", "TranscriptType", "typename", "TRANSCRIPTION_PLUGIN", "TranscriptionPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "SetupAppGraph", "Transcriber", "MeetingTranscriptionState", "SetupMetadata", "context", "Metadata", "TranscriptType", "typename", "metadata", "icon", "getTextContent", "transcript", "client", "requestCapability", "ClientCapabilities", "Client", "queue", "QueueImpl", "edge", "dxn", "refresh", "content", "items", "filter", "block", "isInstanceOf", "TranscriptBlock", "map", "authorName", "segments", "segment", "text", "join", "ClientEvents", "SetupSchema", "Schema", "SetupReactSurface", "ReactSurface", "SetupIntentResolver", "IntentResolver", "AppGraphBuilder"]
3
+ "sources": ["../../../src/TranscriptionPlugin.tsx", "../../../src/translations.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, Events, contributes, defineModule, definePlugin } from '@dxos/app-framework';\nimport { QueueImpl } from '@dxos/echo-db';\nimport { isInstanceOf } from '@dxos/echo-schema';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { DataType } from '@dxos/schema';\n\nimport {\n AppGraphBuilder,\n IntentResolver,\n MeetingTranscriptionState,\n ReactSurface,\n Transcriber,\n Settings,\n} from './capabilities';\nimport { renderMarkdown } from './components';\nimport { meta } from './meta';\nimport translations from './translations';\nimport { TranscriptType } from './types';\n\nexport const TranscriptionPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/settings`,\n activatesOn: Events.SetupSettings,\n activate: Settings,\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: (context) =>\n contributes(Capabilities.Metadata, {\n id: TranscriptType.typename,\n metadata: {\n icon: 'ph--subtitles--regular',\n // TODO(wittjosiah): Factor out. Artifact? Separate capability?\n getTextContent: async (transcript: TranscriptType) => {\n const client = context.requestCapability(ClientCapabilities.Client);\n const space = getSpace(transcript);\n const members = space?.members.get().map((member) => member.identity) ?? [];\n const queue = new QueueImpl(client.edge, transcript.queue.dxn);\n await queue.refresh();\n const content = queue.items\n .filter((message) => isInstanceOf(DataType.Message, message))\n .flatMap((message, index) => renderMarkdown(members)(message, index))\n .join('\\n\\n');\n return content;\n },\n },\n }),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => [contributes(ClientCapabilities.Schema, [TranscriptType])],\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n defineModule({\n id: `${meta.id}/module/transcription`,\n activatesOn: Events.SetupAppGraph,\n activate: Transcriber,\n }),\n defineModule({\n id: `${meta.id}/module/meeting-transcription-state`,\n activatesOn: Events.SetupAppGraph,\n activate: MeetingTranscriptionState,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { TRANSCRIPTION_PLUGIN } from './meta';\nimport { TranscriptType } from './types';\n\nexport default [\n {\n 'en-US': {\n [TranscriptType.typename]: {\n 'typename label': 'Transcript',\n 'object name placeholder': 'New transcript',\n },\n [TRANSCRIPTION_PLUGIN]: {\n 'plugin name': 'Transcription',\n 'transcript companion label': 'Transcript',\n\n 'start transcription label': 'Start transcription',\n 'stop transcription label': 'Stop transcription',\n\n 'delete button': 'Delete',\n 'bookmark button': 'Bookmark',\n 'scroll to end label': 'Scroll to latest',\n\n 'settings entity extraction label': 'Entity extraction',\n },\n },\n },\n];\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,cAAcC,QAAQC,aAAaC,cAAcC,oBAAoB;AAC9E,SAASC,iBAAiB;AAC1B,SAASC,oBAAoB;AAC7B,SAASC,oBAAoBC,oBAAoB;AACjD,SAASC,gBAAgB;AACzB,SAASC,gBAAgB;;;ACFzB,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACC,eAAeC,QAAQ,GAAG;QACzB,kBAAkB;QAClB,2BAA2B;MAC7B;MACA,CAACC,oBAAAA,GAAuB;QACtB,eAAe;QACf,8BAA8B;QAE9B,6BAA6B;QAC7B,4BAA4B;QAE5B,iBAAiB;QACjB,mBAAmB;QACnB,uBAAuB;QAEvB,oCAAoC;MACtC;IACF;EACF;;;;ADJK,IAAMC,sBAAsB,MACjCC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,UAAU,MAAMC,YAAYC,aAAaC,cAAcC,oBAAAA;EACzD,CAAA;EACAT,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOO;IACpBL,UAAUM;EACZ,CAAA;EACAX,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOS;IACpBP,UAAU,CAACQ,YACTP,YAAYC,aAAaO,UAAU;MACjCb,IAAIc,eAAeC;MACnBC,UAAU;QACRC,MAAM;;QAENC,gBAAgB,OAAOC,eAAAA;AACrB,gBAAMC,SAASR,QAAQS,kBAAkBC,mBAAmBC,MAAM;AAClE,gBAAMC,QAAQC,SAASN,UAAAA;AACvB,gBAAMO,UAAUF,OAAOE,QAAQC,IAAAA,EAAMC,IAAI,CAACC,WAAWA,OAAOC,QAAQ,KAAK,CAAA;AACzE,gBAAMC,QAAQ,IAAIC,UAAUZ,OAAOa,MAAMd,WAAWY,MAAMG,GAAG;AAC7D,gBAAMH,MAAMI,QAAO;AACnB,gBAAMC,UAAUL,MAAMM,MACnBC,OAAO,CAACC,YAAYC,aAAaC,SAASC,SAASH,OAAAA,CAAAA,EACnDI,QAAQ,CAACJ,SAASK,UAAUC,eAAenB,OAAAA,EAASa,SAASK,KAAAA,CAAAA,EAC7DE,KAAK,MAAA;AACR,iBAAOV;QACT;MACF;IACF,CAAA;EACJ,CAAA;EACArC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAa8C,aAAaC;IAC1B5C,UAAU,MAAM;MAACC,YAAYiB,mBAAmB2B,QAAQ;QAACnC;OAAe;;EAC1E,CAAA;EACAf,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOgD;IACpB9C,UAAU+C;EACZ,CAAA;EACApD,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOkD;IACpBhD,UAAUiD;EACZ,CAAA;EACAtD,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOoD;IACpBlD,UAAUmD;EACZ,CAAA;EACAxD,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOoD;IACpBlD,UAAUoD;EACZ,CAAA;EACAzD,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOoD;IACpBlD,UAAUqD;EACZ,CAAA;CACD;",
6
+ "names": ["Capabilities", "Events", "contributes", "defineModule", "definePlugin", "QueueImpl", "isInstanceOf", "ClientCapabilities", "ClientEvents", "getSpace", "DataType", "TranscriptType", "typename", "TRANSCRIPTION_PLUGIN", "TranscriptionPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "SetupSettings", "Settings", "SetupMetadata", "context", "Metadata", "TranscriptType", "typename", "metadata", "icon", "getTextContent", "transcript", "client", "requestCapability", "ClientCapabilities", "Client", "space", "getSpace", "members", "get", "map", "member", "identity", "queue", "QueueImpl", "edge", "dxn", "refresh", "content", "items", "filter", "message", "isInstanceOf", "DataType", "Message", "flatMap", "index", "renderMarkdown", "join", "ClientEvents", "SetupSchema", "Schema", "SetupReactSurface", "ReactSurface", "SetupIntentResolver", "IntentResolver", "SetupAppGraph", "AppGraphBuilder", "Transcriber", "MeetingTranscriptionState"]
7
7
  }
@@ -1,23 +1,23 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
- getTimeStr,
4
- randomQueueDxn
5
- } from "./chunk-HKATMD34.mjs";
3
+ getTimeStr
4
+ } from "./chunk-QMHMEKB3.mjs";
6
5
  import {
7
6
  TranscriptType,
8
7
  TranscriptionAction
9
- } from "./chunk-GIO6J6FE.mjs";
8
+ } from "./chunk-KUQ3ZTRX.mjs";
10
9
  import "./chunk-X4DDJIVL.mjs";
11
10
 
12
11
  // packages/plugins/plugin-transcription/src/capabilities/intent-resolver.ts
13
12
  import { Capabilities, contributes, createResolver } from "@dxos/app-framework";
14
- import { create, refFromDXN } from "@dxos/live-object";
13
+ import { live, refFromDXN } from "@dxos/live-object";
14
+ import { createQueueDxn } from "@dxos/react-client/echo";
15
15
  var intent_resolver_default = (context) => contributes(Capabilities.IntentResolver, [
16
16
  createResolver({
17
17
  intent: TranscriptionAction.Create,
18
18
  resolve: ({ name, spaceId }) => {
19
- const transcript = create(TranscriptType, {
20
- queue: refFromDXN(randomQueueDxn(spaceId)),
19
+ const transcript = live(TranscriptType, {
20
+ queue: refFromDXN(createQueueDxn(spaceId)),
21
21
  name: name ?? `Transcript ${getTimeStr(Date.now())}`
22
22
  });
23
23
  return {
@@ -31,4 +31,4 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
31
31
  export {
32
32
  intent_resolver_default as default
33
33
  };
34
- //# sourceMappingURL=intent-resolver-QN2LO5TX.mjs.map
34
+ //# sourceMappingURL=intent-resolver-ACGAPLDZ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createResolver, type PluginsContext } from '@dxos/app-framework';\nimport { live, refFromDXN } from '@dxos/live-object';\nimport { type SpaceId, createQueueDxn } from '@dxos/react-client/echo';\n\nimport { TranscriptionAction, TranscriptType } from '../types';\nimport { getTimeStr } from '../util';\n\nexport default (context: PluginsContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: TranscriptionAction.Create,\n resolve: ({ name, spaceId }) => {\n const transcript = live(TranscriptType, {\n queue: refFromDXN(createQueueDxn(spaceId as SpaceId)),\n name: name ?? `Transcript ${getTimeStr(Date.now())}`,\n });\n\n return { data: { object: transcript } };\n },\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;;;;;;AAIA,SAASA,cAAcC,aAAaC,sBAA2C;AAC/E,SAASC,MAAMC,kBAAkB;AACjC,SAAuBC,sBAAsB;AAK7C,IAAA,0BAAe,CAACC,YACdC,YAAYC,aAAaC,gBAAgB;EACvCC,eAAe;IACbC,QAAQC,oBAAoBC;IAC5BC,SAAS,CAAC,EAAEC,MAAMC,QAAO,MAAE;AACzB,YAAMC,aAAaC,KAAKC,gBAAgB;QACtCC,OAAOC,WAAWC,eAAeN,OAAAA,CAAAA;QACjCD,MAAMA,QAAQ,cAAcQ,WAAWC,KAAKC,IAAG,CAAA,CAAA;MACjD,CAAA;AAEA,aAAO;QAAEC,MAAM;UAAEC,QAAQV;QAAW;MAAE;IACxC;EACF,CAAA;CACD;",
6
+ "names": ["Capabilities", "contributes", "createResolver", "live", "refFromDXN", "createQueueDxn", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "TranscriptionAction", "Create", "resolve", "name", "spaceId", "transcript", "live", "TranscriptType", "queue", "refFromDXN", "createQueueDxn", "getTimeStr", "Date", "now", "data", "object"]
7
+ }
@@ -1,14 +1,14 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  TranscriptionCapabilities
4
- } from "./chunk-PTZHDZ36.mjs";
4
+ } from "./chunk-5E2MR5XK.mjs";
5
5
  import "./chunk-X4DDJIVL.mjs";
6
6
 
7
7
  // packages/plugins/plugin-transcription/src/capabilities/meeting-transcription-state.ts
8
8
  import { contributes } from "@dxos/app-framework";
9
- import { create } from "@dxos/live-object";
9
+ import { live } from "@dxos/live-object";
10
10
  var meeting_transcription_state_default = () => {
11
- const state = create({
11
+ const state = live({
12
12
  enabled: false
13
13
  });
14
14
  return contributes(TranscriptionCapabilities.MeetingTranscriptionState, state);
@@ -16,4 +16,4 @@ var meeting_transcription_state_default = () => {
16
16
  export {
17
17
  meeting_transcription_state_default as default
18
18
  };
19
- //# sourceMappingURL=meeting-transcription-state-ZYVRAW6Y.mjs.map
19
+ //# sourceMappingURL=meeting-transcription-state-3WOZ52BQ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/meeting-transcription-state.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes } from '@dxos/app-framework';\nimport { live } from '@dxos/live-object';\n\nimport { TranscriptionCapabilities } from './capabilities';\n\nexport default () => {\n const state = live<TranscriptionCapabilities.MeetingTranscriptionState>({\n enabled: false,\n });\n\n return contributes(TranscriptionCapabilities.MeetingTranscriptionState, state);\n};\n"],
5
+ "mappings": ";;;;;;;AAIA,SAASA,mBAAmB;AAC5B,SAASC,YAAY;AAIrB,IAAA,sCAAe,MAAA;AACb,QAAMC,QAAQC,KAA0D;IACtEC,SAAS;EACX,CAAA;AAEA,SAAOC,YAAYC,0BAA0BC,2BAA2BL,KAAAA;AAC1E;",
6
+ "names": ["contributes", "live", "state", "live", "enabled", "contributes", "TranscriptionCapabilities", "MeetingTranscriptionState"]
7
+ }