@dxos/plugin-transcription 0.8.2-main.12df754 → 0.8.2-main.36232bc

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 (193) hide show
  1. package/dist/lib/browser/{TranscriptContainer-4D4BHE7G.mjs → TranscriptContainer-2VFHUHLE.mjs} +3 -3
  2. package/dist/lib/browser/app-graph-builder-TDP6PYV6.mjs +350 -0
  3. package/dist/lib/browser/app-graph-builder-TDP6PYV6.mjs.map +7 -0
  4. package/dist/lib/browser/{chunk-DR3NBV6Q.mjs → chunk-KSUYWWIU.mjs} +105 -78
  5. package/dist/lib/browser/chunk-KSUYWWIU.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-5BE6RTNC.mjs → chunk-LTIQFX4W.mjs} +1 -1
  7. package/dist/lib/browser/{chunk-5BE6RTNC.mjs.map → chunk-LTIQFX4W.mjs.map} +1 -1
  8. package/dist/lib/browser/{chunk-RHHJZQPM.mjs → chunk-NFVDICSJ.mjs} +133 -116
  9. package/dist/lib/browser/chunk-NFVDICSJ.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-O6RY7FNK.mjs +27 -0
  11. package/dist/lib/browser/chunk-O6RY7FNK.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-5Q3R53U3.mjs → chunk-YRWBY6UK.mjs} +9 -21
  13. package/dist/lib/browser/chunk-YRWBY6UK.mjs.map +7 -0
  14. package/dist/lib/browser/index.mjs +29 -17
  15. package/dist/lib/browser/index.mjs.map +3 -3
  16. package/dist/lib/browser/{intent-resolver-ZQQEH27F.mjs → intent-resolver-ZWKYRFE7.mjs} +4 -4
  17. package/dist/lib/browser/{intent-resolver-ZQQEH27F.mjs.map → intent-resolver-ZWKYRFE7.mjs.map} +2 -2
  18. package/dist/lib/browser/{meeting-transcription-state-5D52VTHU.mjs → meeting-transcription-state-MNA2XROE.mjs} +2 -2
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/{react-surface-HETJ5XY6.mjs → react-surface-F32UNCKZ.mjs} +18 -7
  21. package/dist/lib/browser/react-surface-F32UNCKZ.mjs.map +7 -0
  22. package/dist/lib/browser/settings-6YAHKVKX.mjs +24 -0
  23. package/dist/lib/browser/settings-6YAHKVKX.mjs.map +7 -0
  24. package/dist/lib/browser/{transcriber-SMRLU2KY.mjs → transcriber-MSBS4VBI.mjs} +4 -4
  25. package/dist/lib/browser/types/index.mjs +3 -3
  26. package/dist/lib/node/{TranscriptContainer-ZWP6UKY6.cjs → TranscriptContainer-E2D7PKO3.cjs} +8 -8
  27. package/dist/lib/node/{TranscriptContainer-ZWP6UKY6.cjs.map → TranscriptContainer-E2D7PKO3.cjs.map} +2 -2
  28. package/dist/lib/node/app-graph-builder-W4VDMVGV.cjs +351 -0
  29. package/dist/lib/node/app-graph-builder-W4VDMVGV.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-LA73IHCB.cjs → chunk-7XIIUVN3.cjs} +108 -80
  31. package/dist/lib/node/chunk-7XIIUVN3.cjs.map +7 -0
  32. package/dist/lib/node/{chunk-3QEJ5EBO.cjs → chunk-IXU57SCA.cjs} +10 -22
  33. package/dist/lib/node/chunk-IXU57SCA.cjs.map +7 -0
  34. package/dist/lib/node/{chunk-HYGDHS6X.cjs → chunk-JUGOXWES.cjs} +4 -4
  35. package/dist/lib/node/{chunk-HYGDHS6X.cjs.map → chunk-JUGOXWES.cjs.map} +1 -1
  36. package/dist/lib/node/{chunk-KO6MKCED.cjs → chunk-NBC6V3M2.cjs} +136 -118
  37. package/dist/lib/node/chunk-NBC6V3M2.cjs.map +7 -0
  38. package/dist/lib/node/{chunk-WXG4Z2EZ.cjs → chunk-TJMZ26GS.cjs} +23 -8
  39. package/dist/lib/node/chunk-TJMZ26GS.cjs.map +7 -0
  40. package/dist/lib/node/index.cjs +46 -34
  41. package/dist/lib/node/index.cjs.map +3 -3
  42. package/dist/lib/node/{intent-resolver-VY3XWYAA.cjs → intent-resolver-RM4JOCDV.cjs} +8 -8
  43. package/dist/lib/node/{intent-resolver-VY3XWYAA.cjs.map → intent-resolver-RM4JOCDV.cjs.map} +2 -2
  44. package/dist/lib/node/{meeting-transcription-state-OYWCY5XE.cjs → meeting-transcription-state-5XLTMWPA.cjs} +6 -6
  45. package/dist/lib/node/meta.json +1 -1
  46. package/dist/lib/node/{react-surface-M2JQIIDY.cjs → react-surface-YQHBGPOC.cjs} +20 -11
  47. package/dist/lib/node/react-surface-YQHBGPOC.cjs.map +7 -0
  48. package/dist/lib/node/settings-ZMB4XRWS.cjs +38 -0
  49. package/dist/lib/node/settings-ZMB4XRWS.cjs.map +7 -0
  50. package/dist/lib/node/{transcriber-E6AAB4SU.cjs → transcriber-55OE4X6I.cjs} +10 -10
  51. package/dist/lib/node/types/index.cjs +8 -8
  52. package/dist/lib/node/types/index.cjs.map +1 -1
  53. package/dist/lib/node-esm/{TranscriptContainer-3HJ752CP.mjs → TranscriptContainer-5N3BSK2S.mjs} +3 -3
  54. package/dist/lib/node-esm/app-graph-builder-DDDVKUHS.mjs +351 -0
  55. package/dist/lib/node-esm/app-graph-builder-DDDVKUHS.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-SDMGJZLN.mjs → chunk-4RMJO6QQ.mjs} +133 -116
  57. package/dist/lib/node-esm/chunk-4RMJO6QQ.mjs.map +7 -0
  58. package/dist/lib/node-esm/{chunk-YXZOLOFT.mjs → chunk-5E2MR5XK.mjs} +1 -1
  59. package/dist/lib/node-esm/{chunk-YXZOLOFT.mjs.map → chunk-5E2MR5XK.mjs.map} +1 -1
  60. package/dist/lib/node-esm/chunk-HZBSWUJH.mjs +28 -0
  61. package/dist/lib/node-esm/chunk-HZBSWUJH.mjs.map +7 -0
  62. package/dist/lib/node-esm/{chunk-54HDN33F.mjs → chunk-OS2ITZUL.mjs} +9 -21
  63. package/dist/lib/node-esm/chunk-OS2ITZUL.mjs.map +7 -0
  64. package/dist/lib/node-esm/{chunk-K3R3YK3S.mjs → chunk-UWF6LM27.mjs} +105 -78
  65. package/dist/lib/node-esm/chunk-UWF6LM27.mjs.map +7 -0
  66. package/dist/lib/node-esm/index.mjs +29 -17
  67. package/dist/lib/node-esm/index.mjs.map +3 -3
  68. package/dist/lib/node-esm/{intent-resolver-FCTNJPWY.mjs → intent-resolver-HDRFXMKP.mjs} +4 -4
  69. package/dist/lib/node-esm/{intent-resolver-FCTNJPWY.mjs.map → intent-resolver-HDRFXMKP.mjs.map} +2 -2
  70. package/dist/lib/node-esm/{meeting-transcription-state-XMZJ45P4.mjs → meeting-transcription-state-3WOZ52BQ.mjs} +2 -2
  71. package/dist/lib/node-esm/meta.json +1 -1
  72. package/dist/lib/node-esm/{react-surface-PXFSIM6V.mjs → react-surface-DRDNXTFZ.mjs} +18 -7
  73. package/dist/lib/node-esm/react-surface-DRDNXTFZ.mjs.map +7 -0
  74. package/dist/lib/node-esm/settings-I35TVDUG.mjs +25 -0
  75. package/dist/lib/node-esm/settings-I35TVDUG.mjs.map +7 -0
  76. package/dist/lib/node-esm/{transcriber-REAGRCPY.mjs → transcriber-HH7EMCGH.mjs} +4 -4
  77. package/dist/lib/node-esm/types/index.mjs +3 -3
  78. package/dist/types/src/TranscriptionPlugin.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  80. package/dist/types/src/capabilities/capabilities.d.ts +1 -1
  81. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  82. package/dist/types/src/capabilities/index.d.ts +1 -0
  83. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  84. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/settings.d.ts +4 -0
  86. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  87. package/dist/types/src/components/Transcript/Transcript.d.ts +6 -4
  88. package/dist/types/src/components/Transcript/Transcript.d.ts.map +1 -1
  89. package/dist/types/src/components/Transcript/Transcript.stories.d.ts +8 -4
  90. package/dist/types/src/components/Transcript/Transcript.stories.d.ts.map +1 -1
  91. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts +27 -0
  92. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts.map +1 -0
  93. package/dist/types/src/components/Transcript/transcript-extension.d.ts +4 -4
  94. package/dist/types/src/components/Transcript/transcript-extension.d.ts.map +1 -1
  95. package/dist/types/src/components/TranscriptContainer.d.ts.map +1 -1
  96. package/dist/types/src/components/TranscriptionSettings/TranscriptionSettings.d.ts +6 -0
  97. package/dist/types/src/components/TranscriptionSettings/TranscriptionSettings.d.ts.map +1 -0
  98. package/dist/types/src/components/TranscriptionSettings/index.d.ts +2 -0
  99. package/dist/types/src/components/TranscriptionSettings/index.d.ts.map +1 -0
  100. package/dist/types/src/components/index.d.ts +1 -0
  101. package/dist/types/src/components/index.d.ts.map +1 -1
  102. package/dist/types/src/components/transcription.stories.d.ts +6 -3
  103. package/dist/types/src/components/transcription.stories.d.ts.map +1 -1
  104. package/dist/types/src/entity-extraction/entity-extraction.d.ts +33 -7
  105. package/dist/types/src/entity-extraction/entity-extraction.d.ts.map +1 -1
  106. package/dist/types/src/hooks/useQueueModelAdapter.d.ts +2 -2
  107. package/dist/types/src/hooks/useQueueModelAdapter.d.ts.map +1 -1
  108. package/dist/types/src/model/model.d.ts +23 -23
  109. package/dist/types/src/model/model.d.ts.map +1 -1
  110. package/dist/types/src/testing/index.d.ts +2 -0
  111. package/dist/types/src/testing/index.d.ts.map +1 -0
  112. package/dist/types/src/testing/testing.d.ts +39 -0
  113. package/dist/types/src/testing/testing.d.ts.map +1 -0
  114. package/dist/types/src/transcriber/transcriber.d.ts +2 -2
  115. package/dist/types/src/transcriber/transcriber.d.ts.map +1 -1
  116. package/dist/types/src/transcriber/transcription-manager.d.ts +17 -15
  117. package/dist/types/src/transcriber/transcription-manager.d.ts.map +1 -1
  118. package/dist/types/src/translations.d.ts +3 -0
  119. package/dist/types/src/translations.d.ts.map +1 -1
  120. package/dist/types/src/types/schema.d.ts +0 -21
  121. package/dist/types/src/types/schema.d.ts.map +1 -1
  122. package/dist/types/src/types/types.d.ts +5 -1
  123. package/dist/types/src/types/types.d.ts.map +1 -1
  124. package/package.json +48 -45
  125. package/src/TranscriptionPlugin.tsx +29 -12
  126. package/src/capabilities/app-graph-builder.ts +99 -29
  127. package/src/capabilities/capabilities.ts +1 -1
  128. package/src/capabilities/index.ts +1 -0
  129. package/src/capabilities/intent-resolver.ts +2 -2
  130. package/src/capabilities/react-surface.tsx +12 -4
  131. package/src/capabilities/settings.ts +20 -0
  132. package/src/components/Transcript/Transcript.stories.tsx +71 -35
  133. package/src/components/Transcript/Transcript.tsx +30 -29
  134. package/src/components/Transcript/deprecated/{Transcript.tsx → OldTranscript.tsx} +24 -1
  135. package/src/components/Transcript/transcript-extension.ts +20 -17
  136. package/src/components/TranscriptContainer.tsx +6 -4
  137. package/src/components/TranscriptionSettings/TranscriptionSettings.tsx +26 -0
  138. package/src/components/TranscriptionSettings/index.ts +5 -0
  139. package/src/components/index.ts +1 -0
  140. package/src/components/transcription.stories.tsx +77 -29
  141. package/src/entity-extraction/entity-extraction.test.ts +55 -9
  142. package/src/entity-extraction/entity-extraction.ts +105 -55
  143. package/src/entity-extraction/system-prompt.tpl +38 -9
  144. package/src/hooks/useQueueModelAdapter.ts +44 -11
  145. package/src/model/model.test.ts +85 -43
  146. package/src/model/model.ts +59 -59
  147. package/src/testing/index.ts +5 -0
  148. package/src/testing/testing.ts +208 -0
  149. package/src/transcriber/transcriber.browser.test.ts +3 -3
  150. package/src/transcriber/transcriber.ts +16 -10
  151. package/src/transcriber/transcription-manager.ts +66 -57
  152. package/src/translations.ts +2 -0
  153. package/src/types/schema.ts +1 -24
  154. package/src/types/types.ts +11 -3
  155. package/dist/lib/browser/app-graph-builder-I4SSIQMW.mjs +0 -168
  156. package/dist/lib/browser/app-graph-builder-I4SSIQMW.mjs.map +0 -7
  157. package/dist/lib/browser/chunk-5Q3R53U3.mjs.map +0 -7
  158. package/dist/lib/browser/chunk-DR3NBV6Q.mjs.map +0 -7
  159. package/dist/lib/browser/chunk-GI5LZ4SV.mjs +0 -8
  160. package/dist/lib/browser/chunk-GI5LZ4SV.mjs.map +0 -7
  161. package/dist/lib/browser/chunk-RHHJZQPM.mjs.map +0 -7
  162. package/dist/lib/browser/react-surface-HETJ5XY6.mjs.map +0 -7
  163. package/dist/lib/node/app-graph-builder-WWC4WNTG.cjs +0 -177
  164. package/dist/lib/node/app-graph-builder-WWC4WNTG.cjs.map +0 -7
  165. package/dist/lib/node/chunk-3QEJ5EBO.cjs.map +0 -7
  166. package/dist/lib/node/chunk-KO6MKCED.cjs.map +0 -7
  167. package/dist/lib/node/chunk-LA73IHCB.cjs.map +0 -7
  168. package/dist/lib/node/chunk-WXG4Z2EZ.cjs.map +0 -7
  169. package/dist/lib/node/react-surface-M2JQIIDY.cjs.map +0 -7
  170. package/dist/lib/node-esm/app-graph-builder-PPJQAFSI.mjs +0 -169
  171. package/dist/lib/node-esm/app-graph-builder-PPJQAFSI.mjs.map +0 -7
  172. package/dist/lib/node-esm/chunk-54HDN33F.mjs.map +0 -7
  173. package/dist/lib/node-esm/chunk-K3R3YK3S.mjs.map +0 -7
  174. package/dist/lib/node-esm/chunk-SDMGJZLN.mjs.map +0 -7
  175. package/dist/lib/node-esm/chunk-XY22OP6H.mjs +0 -10
  176. package/dist/lib/node-esm/chunk-XY22OP6H.mjs.map +0 -7
  177. package/dist/lib/node-esm/react-surface-PXFSIM6V.mjs.map +0 -7
  178. package/dist/types/src/components/Transcript/deprecated/Transcript.d.ts +0 -13
  179. package/dist/types/src/components/Transcript/deprecated/Transcript.d.ts.map +0 -1
  180. package/dist/types/src/components/Transcript/testings.d.ts +0 -51
  181. package/dist/types/src/components/Transcript/testings.d.ts.map +0 -1
  182. package/dist/types/src/testing/test-data.d.ts +0 -73
  183. package/dist/types/src/testing/test-data.d.ts.map +0 -1
  184. package/src/components/Transcript/testings.ts +0 -182
  185. package/src/testing/test-data.ts +0 -314
  186. /package/dist/lib/browser/{TranscriptContainer-4D4BHE7G.mjs.map → TranscriptContainer-2VFHUHLE.mjs.map} +0 -0
  187. /package/dist/lib/browser/{meeting-transcription-state-5D52VTHU.mjs.map → meeting-transcription-state-MNA2XROE.mjs.map} +0 -0
  188. /package/dist/lib/browser/{transcriber-SMRLU2KY.mjs.map → transcriber-MSBS4VBI.mjs.map} +0 -0
  189. /package/dist/lib/node/{meeting-transcription-state-OYWCY5XE.cjs.map → meeting-transcription-state-5XLTMWPA.cjs.map} +0 -0
  190. /package/dist/lib/node/{transcriber-E6AAB4SU.cjs.map → transcriber-55OE4X6I.cjs.map} +0 -0
  191. /package/dist/lib/node-esm/{TranscriptContainer-3HJ752CP.mjs.map → TranscriptContainer-5N3BSK2S.mjs.map} +0 -0
  192. /package/dist/lib/node-esm/{meeting-transcription-state-XMZJ45P4.mjs.map → meeting-transcription-state-3WOZ52BQ.mjs.map} +0 -0
  193. /package/dist/lib/node-esm/{transcriber-REAGRCPY.mjs.map → transcriber-HH7EMCGH.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/types/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,OAAO,EAAO,CAAC,EAAe,MAAM,mBAAmB,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;IAO3B;;OAEG;;EAGH,CAAC;;;;;;;;;;;;AAEH,qBAAa,cAAe,SAAQ,mBAGT;CAAG;AAI9B;;;GAGG;AACH,QAAA,MAAM,gBAAgB;;EAEpB,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEtE;;GAEG;AACH,QAAA,MAAM,iBAAiB;;;EAIrB,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;GAKwD,CAAC;AAErF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/types/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAO,CAAC,EAAe,MAAM,mBAAmB,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;IAO3B;;OAEG;;EAGH,CAAC;;;;;;;;;;;;AAEH,qBAAa,cAAe,SAAQ,mBAGT;CAAG;AAI9B;;;GAGG;AACH,QAAA,MAAM,gBAAgB;;EAEpB,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -10,7 +10,7 @@ export declare namespace TranscriptionAction {
10
10
  } & {
11
11
  input: S.Struct<{
12
12
  name: S.optional<typeof S.String>;
13
- spaceId: typeof S.String;
13
+ spaceId: S.Schema<import("@dxos/keys").SpaceId, string, never>;
14
14
  }>;
15
15
  output: S.Struct<{
16
16
  object: typeof TranscriptType;
@@ -21,4 +21,8 @@ export declare namespace TranscriptionAction {
21
21
  export {};
22
22
  }
23
23
  export declare const isTranscript: (object: unknown) => object is typeof TranscriptType;
24
+ export declare const TranscriptionSettingsSchema: S.mutable<S.Struct<{
25
+ entityExtraction: S.PropertySignature<"?:", boolean | undefined, never, "?:", boolean | undefined, true, never>;
26
+ }>>;
27
+ export type TranscriptionSettingsProps = S.Schema.Type<typeof TranscriptionSettingsSchema>;
24
28
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAgB,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK1C;;GAEG;AAEH,eAAO,MAAM,iBAAiB,2CAA2C,CAAC;AAE1E,yBAAiB,mBAAmB,CAAC;;;;;;;;;;;;IAGnC,MAAM,OAAO,MAAO,SAAQ,WAS1B;KAAG;;CACN;AAED,eAAO,MAAM,YAAY,WAAY,OAAO,KAAG,MAAM,IAAI,OAAO,cAE/D,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,CAAC,EAAgB,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK1C;;GAEG;AAEH,eAAO,MAAM,iBAAiB,2CAA2C,CAAC;AAE1E,yBAAiB,mBAAmB,CAAC;;;;;;;;;;;;IAGnC,MAAM,OAAO,MAAO,SAAQ,WAQ1B;KAAG;;CACN;AAED,eAAO,MAAM,YAAY,WAAY,OAAO,KAAG,MAAM,IAAI,OAAO,cAE/D,CAAC;AAGF,eAAO,MAAM,2BAA2B;;GAIvC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-transcription",
3
- "version": "0.8.2-main.12df754",
3
+ "version": "0.8.2-main.36232bc",
4
4
  "description": "Voice transcription.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -44,60 +44,63 @@
44
44
  "react-router-dom": "^6.4.0",
45
45
  "react-use": "^17.5.1",
46
46
  "wavefile": "^11.0.0",
47
- "@dxos/app-framework": "0.8.2-main.12df754",
48
- "@dxos/artifact": "0.8.2-main.12df754",
49
- "@dxos/assistant": "0.8.2-main.12df754",
50
- "@dxos/async": "0.8.2-main.12df754",
51
- "@dxos/client": "0.8.2-main.12df754",
52
- "@dxos/codec-protobuf": "0.8.2-main.12df754",
53
- "@dxos/context": "0.8.2-main.12df754",
54
- "@dxos/debug": "0.8.2-main.12df754",
55
- "@dxos/echo-db": "0.8.2-main.12df754",
56
- "@dxos/display-name": "0.8.2-main.12df754",
57
- "@dxos/invariant": "0.8.2-main.12df754",
58
- "@dxos/echo-schema": "0.8.2-main.12df754",
59
- "@dxos/live-object": "0.8.2-main.12df754",
60
- "@dxos/keys": "0.8.2-main.12df754",
61
- "@dxos/log": "0.8.2-main.12df754",
62
- "@dxos/plugin-client": "0.8.2-main.12df754",
63
- "@dxos/plugin-deck": "0.8.2-main.12df754",
64
- "@dxos/plugin-graph": "0.8.2-main.12df754",
65
- "@dxos/protocols": "0.8.2-main.12df754",
66
- "@dxos/react-client": "0.8.2-main.12df754",
67
- "@dxos/plugin-meeting": "0.8.2-main.12df754",
68
- "@dxos/react-edge-client": "0.8.2-main.12df754",
69
- "@dxos/react-ui-attention": "0.8.2-main.12df754",
70
- "@dxos/plugin-space": "0.8.2-main.12df754",
71
- "@dxos/react-ui-components": "0.8.2-main.12df754",
72
- "@dxos/react-ui-grid": "0.8.2-main.12df754",
73
- "@dxos/react-ui-sfx": "0.8.2-main.12df754",
74
- "@dxos/react-ui-editor": "0.8.2-main.12df754",
75
- "@dxos/react-ui-stack": "0.8.2-main.12df754",
76
- "@dxos/schema": "0.8.2-main.12df754",
77
- "@dxos/tracing": "0.8.2-main.12df754",
78
- "@dxos/util": "0.8.2-main.12df754"
47
+ "@dxos/artifact": "0.8.2-main.36232bc",
48
+ "@dxos/async": "0.8.2-main.36232bc",
49
+ "@dxos/client": "0.8.2-main.36232bc",
50
+ "@dxos/assistant": "0.8.2-main.36232bc",
51
+ "@dxos/app-framework": "0.8.2-main.36232bc",
52
+ "@dxos/context": "0.8.2-main.36232bc",
53
+ "@dxos/codec-protobuf": "0.8.2-main.36232bc",
54
+ "@dxos/debug": "0.8.2-main.36232bc",
55
+ "@dxos/echo-db": "0.8.2-main.36232bc",
56
+ "@dxos/echo-schema": "0.8.2-main.36232bc",
57
+ "@dxos/keys": "0.8.2-main.36232bc",
58
+ "@dxos/display-name": "0.8.2-main.36232bc",
59
+ "@dxos/invariant": "0.8.2-main.36232bc",
60
+ "@dxos/live-object": "0.8.2-main.36232bc",
61
+ "@dxos/log": "0.8.2-main.36232bc",
62
+ "@dxos/plugin-client": "0.8.2-main.36232bc",
63
+ "@dxos/local-storage": "0.8.2-main.36232bc",
64
+ "@dxos/plugin-graph": "0.8.2-main.36232bc",
65
+ "@dxos/plugin-markdown": "0.8.2-main.36232bc",
66
+ "@dxos/plugin-deck": "0.8.2-main.36232bc",
67
+ "@dxos/plugin-meeting": "0.8.2-main.36232bc",
68
+ "@dxos/protocols": "0.8.2-main.36232bc",
69
+ "@dxos/react-client": "0.8.2-main.36232bc",
70
+ "@dxos/plugin-space": "0.8.2-main.36232bc",
71
+ "@dxos/react-ui-attention": "0.8.2-main.36232bc",
72
+ "@dxos/react-ui-components": "0.8.2-main.36232bc",
73
+ "@dxos/react-ui-form": "0.8.2-main.36232bc",
74
+ "@dxos/react-edge-client": "0.8.2-main.36232bc",
75
+ "@dxos/react-ui-editor": "0.8.2-main.36232bc",
76
+ "@dxos/react-ui-sfx": "0.8.2-main.36232bc",
77
+ "@dxos/react-ui-grid": "0.8.2-main.36232bc",
78
+ "@dxos/react-ui-stack": "0.8.2-main.36232bc",
79
+ "@dxos/schema": "0.8.2-main.36232bc",
80
+ "@dxos/tracing": "0.8.2-main.36232bc",
81
+ "@dxos/util": "0.8.2-main.36232bc"
79
82
  },
80
83
  "devDependencies": {
81
84
  "@types/react": "~18.2.0",
82
85
  "react": "~18.2.0",
83
86
  "react-dom": "~18.2.0",
84
87
  "tailwindcss": "~3.4.1",
85
- "@dxos/plugin-preview": "0.8.2-main.12df754",
86
- "@dxos/plugin-storybook-layout": "0.8.2-main.12df754",
87
- "@dxos/plugin-theme": "0.8.2-main.12df754",
88
- "@dxos/random": "0.8.2-main.12df754",
89
- "@dxos/react-ui": "0.8.2-main.12df754",
90
- "@dxos/react-ui-form": "0.8.2-main.12df754",
91
- "@dxos/react-ui-syntax-highlighter": "0.8.2-main.12df754",
92
- "@dxos/react-ui-theme": "0.8.2-main.12df754",
93
- "@dxos/test-utils": "0.8.2-main.12df754",
94
- "@dxos/storybook-utils": "0.8.2-main.12df754"
88
+ "@dxos/plugin-preview": "0.8.2-main.36232bc",
89
+ "@dxos/plugin-storybook-layout": "0.8.2-main.36232bc",
90
+ "@dxos/plugin-theme": "0.8.2-main.36232bc",
91
+ "@dxos/random": "0.8.2-main.36232bc",
92
+ "@dxos/react-ui-form": "0.8.2-main.36232bc",
93
+ "@dxos/react-ui": "0.8.2-main.36232bc",
94
+ "@dxos/react-ui-syntax-highlighter": "0.8.2-main.36232bc",
95
+ "@dxos/storybook-utils": "0.8.2-main.36232bc",
96
+ "@dxos/test-utils": "0.8.2-main.36232bc",
97
+ "@dxos/react-ui-theme": "0.8.2-main.36232bc"
95
98
  },
96
99
  "optionalDependencies": {
97
100
  "react": "~18.2.0",
98
101
  "react-dom": "~18.2.0",
99
- "@dxos/react-ui": "0.8.2-main.12df754",
100
- "@dxos/react-ui-theme": "0.8.2-main.12df754"
102
+ "@dxos/react-ui": "0.8.2-main.36232bc",
103
+ "@dxos/react-ui-theme": "0.8.2-main.36232bc"
101
104
  },
102
105
  "publishConfig": {
103
106
  "access": "public"
@@ -6,11 +6,21 @@ import { Capabilities, Events, contributes, defineModule, definePlugin } from '@
6
6
  import { QueueImpl } from '@dxos/echo-db';
7
7
  import { isInstanceOf } from '@dxos/echo-schema';
8
8
  import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
9
+ import { getSpace } from '@dxos/react-client/echo';
10
+ import { MessageType } from '@dxos/schema';
9
11
 
10
- import { AppGraphBuilder, IntentResolver, MeetingTranscriptionState, ReactSurface, Transcriber } from './capabilities';
12
+ import {
13
+ AppGraphBuilder,
14
+ IntentResolver,
15
+ MeetingTranscriptionState,
16
+ ReactSurface,
17
+ Transcriber,
18
+ Settings,
19
+ } from './capabilities';
20
+ import { renderMarkdown } from './components';
11
21
  import { meta } from './meta';
12
22
  import translations from './translations';
13
- import { TranscriptBlock, TranscriptType } from './types';
23
+ import { TranscriptType } from './types';
14
24
 
15
25
  export const TranscriptionPlugin = () =>
16
26
  definePlugin(meta, [
@@ -20,14 +30,9 @@ export const TranscriptionPlugin = () =>
20
30
  activate: () => contributes(Capabilities.Translations, translations),
21
31
  }),
22
32
  defineModule({
23
- id: `${meta.id}/module/transcription`,
24
- activatesOn: Events.SetupAppGraph,
25
- activate: Transcriber,
26
- }),
27
- defineModule({
28
- id: `${meta.id}/module/meeting-transcription-state`,
29
- activatesOn: Events.SetupAppGraph,
30
- activate: MeetingTranscriptionState,
33
+ id: `${meta.id}/module/settings`,
34
+ activatesOn: Events.SetupSettings,
35
+ activate: Settings,
31
36
  }),
32
37
  defineModule({
33
38
  id: `${meta.id}/module/metadata`,
@@ -40,11 +45,13 @@ export const TranscriptionPlugin = () =>
40
45
  // TODO(wittjosiah): Factor out. Artifact? Separate capability?
41
46
  getTextContent: async (transcript: TranscriptType) => {
42
47
  const client = context.requestCapability(ClientCapabilities.Client);
48
+ const space = getSpace(transcript);
49
+ const members = space?.members.get().map((member) => member.identity) ?? [];
43
50
  const queue = new QueueImpl(client.edge, transcript.queue.dxn);
44
51
  await queue.refresh();
45
52
  const content = queue.items
46
- .filter((block) => isInstanceOf(TranscriptBlock, block))
47
- .map((block) => `${block.authorName}: ${block.segments.map((segment) => segment.text).join('\n')}`)
53
+ .filter((message) => isInstanceOf(MessageType, message))
54
+ .flatMap((message, index) => renderMarkdown(members)(message, index))
48
55
  .join('\n\n');
49
56
  return content;
50
57
  },
@@ -71,4 +78,14 @@ export const TranscriptionPlugin = () =>
71
78
  activatesOn: Events.SetupAppGraph,
72
79
  activate: AppGraphBuilder,
73
80
  }),
81
+ defineModule({
82
+ id: `${meta.id}/module/transcription`,
83
+ activatesOn: Events.SetupAppGraph,
84
+ activate: Transcriber,
85
+ }),
86
+ defineModule({
87
+ id: `${meta.id}/module/meeting-transcription-state`,
88
+ activatesOn: Events.SetupAppGraph,
89
+ activate: MeetingTranscriptionState,
90
+ }),
74
91
  ]);
@@ -2,24 +2,31 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import type { Schema } from 'effect';
6
+
5
7
  import { Capabilities, contributes, createIntent, type PluginsContext } from '@dxos/app-framework';
6
- import { fullyQualifiedId, getSpace, makeRef, type Space } from '@dxos/client/echo';
7
- import { generateName } from '@dxos/display-name';
8
- import { getSchemaTypename, isInstanceOf } from '@dxos/echo-schema';
8
+ import { AIServiceEdgeClient, type AIServiceClient } from '@dxos/assistant';
9
+ import { AI_SERVICE_ENDPOINT, Contact, Organization } from '@dxos/assistant/testing';
10
+ import { Filter, fullyQualifiedId, getSpace, makeRef, type Space } from '@dxos/client/echo';
11
+ import { getSchemaTypename, isInstanceOf, type BaseEchoObject } from '@dxos/echo-schema';
9
12
  import { invariant } from '@dxos/invariant';
13
+ import { DXN } from '@dxos/keys';
14
+ import { log } from '@dxos/log';
10
15
  import { ClientCapabilities } from '@dxos/plugin-client';
11
16
  import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';
12
17
  import { createExtension, type Node } from '@dxos/plugin-graph';
18
+ import { DocumentType } from '@dxos/plugin-markdown/types';
13
19
  import { MeetingCapabilities, type CallState, type MediaState } from '@dxos/plugin-meeting';
14
- import { MeetingType } from '@dxos/plugin-meeting/types';
20
+ import { MeetingType, type MeetingCallProperties } from '@dxos/plugin-meeting/types';
15
21
  import { type buf } from '@dxos/protocols/buf';
16
22
  import { type TranscriptionPayloadSchema } from '@dxos/protocols/buf/dxos/edge/calls_pb';
17
- import { keyToFallback } from '@dxos/util';
23
+ import type { MessageType } from '@dxos/schema';
18
24
 
19
25
  import { TranscriptionCapabilities } from './capabilities';
26
+ import { processTranscriptMessage } from '../entity-extraction';
20
27
  import { TRANSCRIPTION_PLUGIN } from '../meta';
21
28
  import { TranscriptionManager } from '../transcriber';
22
- import { TranscriptionAction, TranscriptType } from '../types';
29
+ import { TranscriptionAction, type TranscriptionSettingsProps, TranscriptType } from '../types';
23
30
 
24
31
  // TODO(wittjosiah): Factor out.
25
32
  // TODO(wittjosiah): Can we stop using protobuf for this?
@@ -49,8 +56,7 @@ export default (context: PluginsContext) =>
49
56
  contributes(Capabilities.AppGraphBuilder, [
50
57
  createExtension({
51
58
  id: `${TRANSCRIPTION_PLUGIN}/meeting-transcript`,
52
- filter: (node): node is Node<MeetingType> =>
53
- isInstanceOf(MeetingType, node.data) && node.type !== PLANK_COMPANION_TYPE,
59
+ filter: (node): node is Node<MeetingType> => isInstanceOf(MeetingType, node.data),
54
60
  actions: ({ node }) => {
55
61
  const meeting = node.data;
56
62
  const state = context.requestCapability(TranscriptionCapabilities.MeetingTranscriptionState);
@@ -61,14 +67,13 @@ export default (context: PluginsContext) =>
61
67
  // NOTE: We are not saving the state of the transcription manager here.
62
68
  // We expect the state to be updated through `onCallStateUpdated` once it is propagated through Swarm.
63
69
  // This is done to avoid race conditions and to not handle optimistic updates.
64
-
65
70
  const transcript = await getMeetingTranscript(context, meeting);
66
71
  invariant(transcript, 'Failed to create transcript');
67
72
 
68
- const call = context.requestCapability(MeetingCapabilities.CallManager);
69
- call.setActivity(getSchemaTypename(TranscriptType)!, {
70
- enabled: !state.enabled,
73
+ const callManager = context.requestCapability(MeetingCapabilities.CallManager);
74
+ callManager.setActivity(getSchemaTypename(TranscriptType)!, {
71
75
  queueDxn: transcript.queue.dxn.toString(),
76
+ enabled: !state.enabled,
72
77
  });
73
78
  },
74
79
  properties: {
@@ -86,6 +91,14 @@ export default (context: PluginsContext) =>
86
91
  const meeting = node.data;
87
92
  const client = context.requestCapability(ClientCapabilities.Client);
88
93
  const state = context.requestCapability(TranscriptionCapabilities.MeetingTranscriptionState);
94
+ const settings = context
95
+ .requestCapability(Capabilities.SettingsStore)
96
+ .getStore<TranscriptionSettingsProps>(TRANSCRIPTION_PLUGIN)!.value;
97
+
98
+ // TODO(dmaretskyi): Request via capability.
99
+ const aiClient: AIServiceClient | undefined = new AIServiceEdgeClient({
100
+ endpoint: AI_SERVICE_ENDPOINT.REMOTE,
101
+ });
89
102
 
90
103
  return [
91
104
  {
@@ -95,29 +108,45 @@ export default (context: PluginsContext) =>
95
108
  properties: {
96
109
  label: ['transcript companion label', { ns: TRANSCRIPTION_PLUGIN }],
97
110
  icon: 'ph--subtitles--regular',
111
+ position: 'hoist',
98
112
  disposition: 'hidden',
99
113
  schema: TranscriptType,
100
114
  getIntent: ({ space }: { space: Space }) =>
101
115
  createIntent(TranscriptionAction.Create, { spaceId: space.id }),
102
- onJoin: () => {
103
- const transcriptionManager = new TranscriptionManager(client.edge);
116
+
117
+ // TODO(burdon): Is this the right place to inisitalize the state? Change to a capability?
118
+ onJoin: async ({ meeting }: { meeting: MeetingType; roomId: string }) => {
104
119
  const identity = client.halo.identity.get();
105
120
  invariant(identity);
106
- transcriptionManager.setName(
107
- identity.profile?.displayName ?? generateName(identity.identityKey.toHex()),
108
- );
109
- const fallbackValue = keyToFallback(identity!.identityKey);
110
- const userHue = identity!.profile?.data?.hue || fallbackValue.hue;
111
- transcriptionManager.setHue(userHue);
112
- void transcriptionManager.open();
113
- state.transcriptionManager = transcriptionManager;
121
+ const space = getSpace(meeting);
122
+ invariant(space);
123
+
124
+ let messageEnricher;
125
+ if (aiClient && settings.entityExtraction) {
126
+ messageEnricher = createEntityExtractionEnricher({
127
+ aiClient,
128
+ // TODO(dmaretskyi): Have those be discovered from the schema graph or contributed by capabilities?
129
+ // This forced me to add a dependency on markdown plugin.
130
+ // This will be replaced with a vector search index anyway, so its not a big deal.
131
+ contextTypes: [DocumentType, Contact, Organization],
132
+ space,
133
+ });
134
+ }
135
+
136
+ // TODO(burdon): The TranscriptionManager singleton is part of the state and should just be updated here.
137
+ state.transcriptionManager = await new TranscriptionManager({
138
+ edgeClient: client.edge,
139
+ messageEnricher,
140
+ })
141
+ .setIdentityDid(identity.did)
142
+ .open();
114
143
  },
115
- onLeave: () => {
116
- void state.transcriptionManager?.close();
144
+ onLeave: async () => {
145
+ await state.transcriptionManager?.close();
117
146
  state.transcriptionManager = undefined;
118
147
  state.enabled = false;
119
148
  },
120
- onCallStateUpdated: (callState: CallState) => {
149
+ onCallStateUpdated: async (callState: CallState) => {
121
150
  const typename = getSchemaTypename(TranscriptType);
122
151
  const transcription = typename ? callState.activities?.[typename] : undefined;
123
152
  if (!transcription?.payload) {
@@ -126,16 +155,57 @@ export default (context: PluginsContext) =>
126
155
 
127
156
  const payload: TranscriptionPayload = transcription.payload;
128
157
  state.enabled = !!payload.enabled;
129
- void state.transcriptionManager?.setEnabled(payload.enabled);
130
- void state.transcriptionManager?.setQueue(payload.queueDxn);
158
+ if (payload.queueDxn) {
159
+ // NOTE: Must set queue before enabling transcription.
160
+ state.transcriptionManager?.setQueue(DXN.parse(payload.queueDxn));
161
+ }
162
+ await state.transcriptionManager?.setEnabled(payload.enabled);
131
163
  },
132
- onMediaStateUpdated: ([mediaState, isSpeaking]: [MediaState, boolean]) => {
164
+ onMediaStateUpdated: async ([mediaState, isSpeaking]: [MediaState, boolean]) => {
133
165
  void state.transcriptionManager?.setAudioTrack(mediaState.audioTrack);
134
166
  void state.transcriptionManager?.setRecording(isSpeaking);
135
167
  },
136
- },
168
+ } satisfies MeetingCallProperties,
137
169
  },
138
170
  ];
139
171
  },
140
172
  }),
141
173
  ]);
174
+
175
+ type EntityExtractionEnricherFactoryOptions = {
176
+ aiClient: AIServiceClient;
177
+ contextTypes: Schema.Schema.AnyNoContext[];
178
+ space: Space;
179
+ };
180
+
181
+ const createEntityExtractionEnricher = ({ aiClient, contextTypes, space }: EntityExtractionEnricherFactoryOptions) => {
182
+ return async (message: MessageType) => {
183
+ const { objects } = await space.db.query(Filter.or(...contextTypes.map((s) => Filter.schema(s)))).run();
184
+ log.info('context', { objects });
185
+
186
+ const { message: enhancedMessage, timeElapsed } = await processTranscriptMessage({
187
+ aiService: aiClient,
188
+ message,
189
+ context: { objects: await Promise.all(objects.map(processContextObject)) },
190
+ options: { timeout: ENTITY_EXTRACTOR_TIMEOUT, fallbackToRaw: true },
191
+ });
192
+
193
+ log.info('entity extraction time', { timeElapsed });
194
+ return enhancedMessage;
195
+ };
196
+ };
197
+
198
+ const processContextObject = async (object: BaseEchoObject): Promise<any> => {
199
+ // TODO(dmaretskyi): Documents need special processing is the content is behind a ref.
200
+ // TODO(dmaretskyi): Think about a way to handle this serialization with a decorator.
201
+ if (isInstanceOf(DocumentType, object)) {
202
+ return {
203
+ ...object,
204
+ content: await object.content.load(),
205
+ };
206
+ }
207
+
208
+ return object;
209
+ };
210
+
211
+ const ENTITY_EXTRACTOR_TIMEOUT = 25_000;
@@ -18,8 +18,8 @@ export namespace TranscriptionCapabilities {
18
18
  export const Transcriber = defineCapability<GetTranscriber>(`${TRANSCRIPTION_PLUGIN}/capability/transcriber`);
19
19
 
20
20
  export type MeetingTranscriptionState = Live<{
21
- enabled: boolean;
22
21
  transcriptionManager?: TranscriptionManager;
22
+ enabled: boolean; // TODO(burdon): Move state into TranscriptionManager.
23
23
  }>;
24
24
  export const MeetingTranscriptionState = defineCapability<MeetingTranscriptionState>(
25
25
  `${TRANSCRIPTION_PLUGIN}/capability/meeting-transcription-state`,
@@ -9,5 +9,6 @@ export const IntentResolver = lazy(() => import('./intent-resolver'));
9
9
  export const MeetingTranscriptionState = lazy(() => import('./meeting-transcription-state'));
10
10
  export const ReactSurface = lazy(() => import('./react-surface'));
11
11
  export const Transcriber = lazy(() => import('./transcriber'));
12
+ export const Settings = lazy(() => import('./settings'));
12
13
 
13
14
  export * from './capabilities';
@@ -4,7 +4,7 @@
4
4
 
5
5
  import { Capabilities, contributes, createResolver, type PluginsContext } from '@dxos/app-framework';
6
6
  import { live, refFromDXN } from '@dxos/live-object';
7
- import { type SpaceId, randomQueueDxn } from '@dxos/react-client/echo';
7
+ import { type SpaceId, createQueueDxn } from '@dxos/react-client/echo';
8
8
 
9
9
  import { TranscriptionAction, TranscriptType } from '../types';
10
10
  import { getTimeStr } from '../util';
@@ -15,7 +15,7 @@ export default (context: PluginsContext) =>
15
15
  intent: TranscriptionAction.Create,
16
16
  resolve: ({ name, spaceId }) => {
17
17
  const transcript = live(TranscriptType, {
18
- queue: refFromDXN(randomQueueDxn(spaceId as SpaceId)),
18
+ queue: refFromDXN(createQueueDxn(spaceId as SpaceId)),
19
19
  name: name ?? `Transcript ${getTimeStr(Date.now())}`,
20
20
  });
21
21
 
@@ -5,15 +5,23 @@
5
5
  import React from 'react';
6
6
 
7
7
  import { Capabilities, contributes, createSurface } from '@dxos/app-framework';
8
+ import { SettingsStore } from '@dxos/local-storage';
8
9
 
9
- import { TranscriptionContainer } from '../components';
10
- import { TRANSCRIPTION_PLUGIN } from '../meta';
11
- import { isTranscript, type TranscriptType } from '../types';
10
+ import { TranscriptionContainer, TranscriptionSettings } from '../components';
11
+ import { meta } from '../meta';
12
+ import { isTranscript, type TranscriptionSettingsProps, type TranscriptType } from '../types';
12
13
 
13
14
  export default () =>
14
15
  contributes(Capabilities.ReactSurface, [
15
16
  createSurface({
16
- id: `${TRANSCRIPTION_PLUGIN}/article/transcript`,
17
+ id: `${meta.id}/plugin-settings`,
18
+ role: 'article',
19
+ filter: (data): data is { subject: SettingsStore<TranscriptionSettingsProps> } =>
20
+ data.subject instanceof SettingsStore && data.subject.prefix === meta.id,
21
+ component: ({ data: { subject } }) => <TranscriptionSettings settings={subject.value} />,
22
+ }),
23
+ createSurface({
24
+ id: `${meta.id}/article/transcript`,
17
25
  role: ['article', 'section'],
18
26
  filter: (data): data is { subject: TranscriptType } => isTranscript(data.subject),
19
27
  component: ({ data, role }) => <TranscriptionContainer transcript={data.subject} role={role} />,
@@ -0,0 +1,20 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capabilities, contributes } from '@dxos/app-framework';
6
+ import { live } from '@dxos/live-object';
7
+
8
+ import { TRANSCRIPTION_PLUGIN } from '../meta';
9
+ import { TranscriptionSettingsSchema } from '../types';
10
+
11
+ export default () => {
12
+ // TODO(wittjosiah): `live` currently doesn't handle schema default values.
13
+ const settings = live(TranscriptionSettingsSchema, { entityExtraction: true });
14
+
15
+ return contributes(Capabilities.Settings, {
16
+ schema: TranscriptionSettingsSchema,
17
+ prefix: TRANSCRIPTION_PLUGIN,
18
+ value: settings,
19
+ });
20
+ };