@dxos/plugin-transcription 0.8.4-main.2e9d522 → 0.8.4-main.5ea62a8
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.
- package/dist/lib/browser/TranscriptContainer-OX7OOODC.mjs +11 -0
- package/dist/lib/browser/blueprint-definition-QQSGTX5F.mjs +142 -0
- package/dist/lib/browser/blueprint-definition-QQSGTX5F.mjs.map +7 -0
- package/dist/lib/browser/{chunk-4FJIYH7T.mjs → chunk-26XDG6GQ.mjs} +2 -2
- package/dist/lib/browser/{chunk-5WH45KBY.mjs → chunk-3X7HP44M.mjs} +8 -1
- package/dist/lib/browser/{chunk-5WH45KBY.mjs.map → chunk-3X7HP44M.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-5KPYIC3N.mjs → chunk-5I4BMOGE.mjs} +422 -402
- package/dist/lib/browser/chunk-5I4BMOGE.mjs.map +7 -0
- package/dist/lib/browser/{chunk-FFEPEPCU.mjs → chunk-BA64VLLR.mjs} +85 -94
- package/dist/lib/browser/chunk-BA64VLLR.mjs.map +7 -0
- package/dist/lib/browser/chunk-HXVGV7T6.mjs +63 -0
- package/dist/lib/browser/chunk-HXVGV7T6.mjs.map +7 -0
- package/dist/lib/browser/{chunk-U6QBOGTN.mjs → chunk-TNEQFHIU.mjs} +2 -2
- package/dist/lib/browser/{chunk-U6QBOGTN.mjs.map → chunk-TNEQFHIU.mjs.map} +1 -1
- package/dist/lib/browser/index.mjs +18 -12
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/intent-resolver-T3EGLS3L.mjs +25 -0
- package/dist/lib/browser/intent-resolver-T3EGLS3L.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-E5D5AE3F.mjs → react-surface-QYX74JNG.mjs} +8 -8
- package/dist/lib/browser/react-surface-QYX74JNG.mjs.map +7 -0
- package/dist/lib/browser/{transcriber-PXT4QBFY.mjs → transcriber-JOOAQVYV.mjs} +5 -5
- package/dist/lib/browser/transcriber-JOOAQVYV.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +6 -8
- package/dist/lib/node-esm/{TranscriptContainer-VBAOM5DG.mjs → TranscriptContainer-BUWK63SI.mjs} +4 -4
- package/dist/lib/node-esm/blueprint-definition-4PLCTH5Q.mjs +143 -0
- package/dist/lib/node-esm/blueprint-definition-4PLCTH5Q.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-RHF2ALML.mjs → chunk-3QAIZGMW.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-RHF2ALML.mjs.map → chunk-3QAIZGMW.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-TJKAO7VR.mjs → chunk-DT3AOC3E.mjs} +422 -402
- package/dist/lib/node-esm/chunk-DT3AOC3E.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HT3W7LDP.mjs → chunk-J5GQ3KGX.mjs} +85 -94
- package/dist/lib/node-esm/chunk-J5GQ3KGX.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-Y2B4HWSS.mjs → chunk-NWD757KH.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-XMUCZBP3.mjs → chunk-QARUDLHN.mjs} +7 -1
- package/dist/lib/node-esm/{chunk-XMUCZBP3.mjs.map → chunk-QARUDLHN.mjs.map} +1 -1
- package/dist/lib/node-esm/chunk-W72HVQMD.mjs +64 -0
- package/dist/lib/node-esm/chunk-W72HVQMD.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +18 -12
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/intent-resolver-VDHCUAIO.mjs +26 -0
- package/dist/lib/node-esm/intent-resolver-VDHCUAIO.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-QRDJOHN5.mjs → react-surface-TM7XOQBR.mjs} +8 -8
- package/dist/lib/node-esm/react-surface-TM7XOQBR.mjs.map +7 -0
- package/dist/lib/node-esm/{transcriber-YUTEVANE.mjs → transcriber-QPS55YP2.mjs} +5 -5
- package/dist/lib/node-esm/transcriber-QPS55YP2.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +6 -8
- package/dist/types/src/TranscriptionPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/capabilities.d.ts +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +3 -2
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/transcriber.d.ts +1 -1
- package/dist/types/src/capabilities/transcriber.d.ts.map +1 -1
- package/dist/types/src/components/Transcript/Transcript.d.ts +4 -4
- package/dist/types/src/components/Transcript/Transcript.d.ts.map +1 -1
- package/dist/types/src/components/Transcript/Transcript.stories.d.ts +32 -15
- package/dist/types/src/components/Transcript/Transcript.stories.d.ts.map +1 -1
- package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts +2 -2
- package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts.map +1 -1
- package/dist/types/src/components/TranscriptContainer.d.ts +2 -2
- package/dist/types/src/components/TranscriptContainer.d.ts.map +1 -1
- package/dist/types/src/components/stories/FileTranscription.stories.d.ts +5 -2
- package/dist/types/src/components/stories/FileTranscription.stories.d.ts.map +1 -1
- package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts +10 -5
- package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts.map +1 -1
- package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts +7 -4
- package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts.map +1 -1
- package/dist/types/src/components/stories/TranscriptionStory.d.ts +1 -0
- package/dist/types/src/components/stories/TranscriptionStory.d.ts.map +1 -1
- package/dist/types/src/functions/index.d.ts +3 -0
- package/dist/types/src/functions/index.d.ts.map +1 -0
- package/dist/types/src/functions/open.d.ts +7 -0
- package/dist/types/src/functions/open.d.ts.map +1 -0
- package/dist/types/src/functions/summarize.d.ts +11 -0
- package/dist/types/src/functions/summarize.d.ts.map +1 -0
- package/dist/types/src/hooks/useAudioFile.d.ts.map +1 -1
- package/dist/types/src/hooks/useVoiceInput.d.ts.map +1 -1
- package/dist/types/src/segments-normalization/normalization.d.ts +366 -321
- package/dist/types/src/segments-normalization/normalization.d.ts.map +1 -1
- package/dist/types/src/testing/testing.d.ts +1 -1
- package/dist/types/src/testing/testing.d.ts.map +1 -1
- package/dist/types/src/transcriber/media-stream-recorder.d.ts +1 -1
- package/dist/types/src/transcriber/media-stream-recorder.d.ts.map +1 -1
- package/dist/types/src/transcriber/transcriber.d.ts.map +1 -1
- package/dist/types/src/transcriber/transcription-manager.d.ts +3 -7
- package/dist/types/src/transcriber/transcription-manager.d.ts.map +1 -1
- package/dist/types/src/types/Transcript.d.ts +30 -0
- package/dist/types/src/types/Transcript.d.ts.map +1 -0
- package/dist/types/src/types/TranscriptAction.d.ts +23 -0
- package/dist/types/src/types/TranscriptAction.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +2 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +0 -26
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +55 -53
- package/src/TranscriptionPlugin.tsx +10 -5
- package/src/capabilities/blueprint-definition.ts +31 -0
- package/src/capabilities/capabilities.ts +3 -3
- package/src/capabilities/index.ts +1 -0
- package/src/capabilities/intent-resolver.ts +5 -11
- package/src/capabilities/react-surface.tsx +2 -2
- package/src/capabilities/transcriber.ts +3 -2
- package/src/components/Transcript/Transcript.stories.tsx +12 -13
- package/src/components/Transcript/Transcript.tsx +8 -7
- package/src/components/Transcript/deprecated/OldTranscript.tsx +4 -4
- package/src/components/TranscriptContainer.tsx +5 -4
- package/src/components/stories/FileTranscription.stories.tsx +22 -12
- package/src/components/stories/KeyWordRecognition.stories.tsx +12 -6
- package/src/components/stories/MicrophoneTranscription.stories.tsx +10 -9
- package/src/components/stories/TranscriptionStory.tsx +9 -5
- package/src/functions/index.ts +6 -0
- package/src/functions/open.ts +37 -0
- package/src/functions/summarize.ts +97 -0
- package/src/hooks/useAudioFile.ts +1 -10
- package/src/hooks/useVoiceInput.ts +3 -2
- package/src/model/model.test.ts +1 -1
- package/src/segments-normalization/message-normalizer.ts +1 -1
- package/src/segments-normalization/normalization.test.ts +4 -4
- package/src/segments-normalization/normalization.ts +37 -36
- package/src/testing/testing.ts +3 -3
- package/src/transcriber/media-stream-recorder.ts +1 -1
- package/src/transcriber/transcriber.browser.test.ts +2 -1
- package/src/transcriber/transcriber.ts +2 -1
- package/src/transcriber/transcription-manager.ts +17 -38
- package/src/types/{schema.ts → Transcript.ts} +11 -8
- package/src/types/TranscriptAction.ts +24 -0
- package/src/types/index.ts +2 -1
- package/src/types/types.ts +0 -23
- package/dist/lib/browser/TranscriptContainer-6WCKCXQ6.mjs +0 -11
- package/dist/lib/browser/chunk-5KPYIC3N.mjs.map +0 -7
- package/dist/lib/browser/chunk-FFEPEPCU.mjs.map +0 -7
- package/dist/lib/browser/chunk-R7INNNUQ.mjs +0 -55
- package/dist/lib/browser/chunk-R7INNNUQ.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-3O33MMP5.mjs +0 -30
- package/dist/lib/browser/intent-resolver-3O33MMP5.mjs.map +0 -7
- package/dist/lib/browser/react-surface-E5D5AE3F.mjs.map +0 -7
- package/dist/lib/browser/transcriber-PXT4QBFY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HT3W7LDP.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TJKAO7VR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-U65ZWK3L.mjs +0 -56
- package/dist/lib/node-esm/chunk-U65ZWK3L.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-YMN5SXNC.mjs +0 -31
- package/dist/lib/node-esm/intent-resolver-YMN5SXNC.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-QRDJOHN5.mjs.map +0 -7
- package/dist/lib/node-esm/transcriber-YUTEVANE.mjs.map +0 -7
- package/dist/types/src/types/schema.d.ts +0 -41
- package/dist/types/src/types/schema.d.ts.map +0 -1
- /package/dist/lib/browser/{TranscriptContainer-6WCKCXQ6.mjs.map → TranscriptContainer-OX7OOODC.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-4FJIYH7T.mjs.map → chunk-26XDG6GQ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{TranscriptContainer-VBAOM5DG.mjs.map → TranscriptContainer-BUWK63SI.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-Y2B4HWSS.mjs.map → chunk-NWD757KH.mjs.map} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-transcription",
|
|
3
|
-
"version": "0.8.4-main.
|
|
3
|
+
"version": "0.8.4-main.5ea62a8",
|
|
4
4
|
"description": "Voice transcription.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -9,11 +9,13 @@
|
|
|
9
9
|
"type": "module",
|
|
10
10
|
"exports": {
|
|
11
11
|
".": {
|
|
12
|
+
"source": "./src/index.ts",
|
|
12
13
|
"types": "./dist/types/src/index.d.ts",
|
|
13
14
|
"browser": "./dist/lib/browser/index.mjs",
|
|
14
15
|
"node": "./dist/lib/node-esm/index.mjs"
|
|
15
16
|
},
|
|
16
17
|
"./types": {
|
|
18
|
+
"source": "./src/types/index.ts",
|
|
17
19
|
"types": "./dist/types/src/types/index.d.ts",
|
|
18
20
|
"browser": "./dist/lib/browser/types/index.mjs",
|
|
19
21
|
"node": "./dist/lib/node-esm/types/index.mjs"
|
|
@@ -44,64 +46,64 @@
|
|
|
44
46
|
"react-router-dom": "^6.4.0",
|
|
45
47
|
"react-use": "^17.5.1",
|
|
46
48
|
"wavefile": "^11.0.0",
|
|
47
|
-
"@dxos/ai": "0.8.4-main.
|
|
48
|
-
"@dxos/app-framework": "0.8.4-main.
|
|
49
|
-
"@dxos/assistant": "0.8.4-main.
|
|
50
|
-
"@dxos/
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/
|
|
54
|
-
"@dxos/
|
|
55
|
-
"@dxos/display-name": "0.8.4-main.
|
|
56
|
-
"@dxos/
|
|
57
|
-
"@dxos/
|
|
58
|
-
"@dxos/echo-db": "0.8.4-main.
|
|
59
|
-
"@dxos/echo
|
|
60
|
-
"@dxos/functions": "0.8.4-main.
|
|
61
|
-
"@dxos/
|
|
62
|
-
"@dxos/
|
|
63
|
-
"@dxos/
|
|
64
|
-
"@dxos/
|
|
65
|
-
"@dxos/
|
|
66
|
-
"@dxos/plugin-
|
|
67
|
-
"@dxos/plugin-
|
|
68
|
-
"@dxos/plugin-
|
|
69
|
-
"@dxos/plugin-
|
|
70
|
-
"@dxos/plugin-
|
|
71
|
-
"@dxos/
|
|
72
|
-
"@dxos/protocols": "0.8.4-main.
|
|
73
|
-
"@dxos/react-client": "0.8.4-main.
|
|
74
|
-
"@dxos/react-
|
|
75
|
-
"@dxos/react-
|
|
76
|
-
"@dxos/react-ui-components": "0.8.4-main.
|
|
77
|
-
"@dxos/react-ui-editor": "0.8.4-main.
|
|
78
|
-
"@dxos/react-ui-form": "0.8.4-main.
|
|
79
|
-
"@dxos/react-ui-sfx": "0.8.4-main.
|
|
80
|
-
"@dxos/react-ui-
|
|
81
|
-
"@dxos/
|
|
82
|
-
"@dxos/
|
|
83
|
-
"@dxos/tracing": "0.8.4-main.
|
|
84
|
-
"@dxos/util": "0.8.4-main.
|
|
49
|
+
"@dxos/ai": "0.8.4-main.5ea62a8",
|
|
50
|
+
"@dxos/app-framework": "0.8.4-main.5ea62a8",
|
|
51
|
+
"@dxos/assistant": "0.8.4-main.5ea62a8",
|
|
52
|
+
"@dxos/client": "0.8.4-main.5ea62a8",
|
|
53
|
+
"@dxos/codec-protobuf": "0.8.4-main.5ea62a8",
|
|
54
|
+
"@dxos/blueprints": "0.8.4-main.5ea62a8",
|
|
55
|
+
"@dxos/context": "0.8.4-main.5ea62a8",
|
|
56
|
+
"@dxos/debug": "0.8.4-main.5ea62a8",
|
|
57
|
+
"@dxos/display-name": "0.8.4-main.5ea62a8",
|
|
58
|
+
"@dxos/async": "0.8.4-main.5ea62a8",
|
|
59
|
+
"@dxos/echo-schema": "0.8.4-main.5ea62a8",
|
|
60
|
+
"@dxos/echo-db": "0.8.4-main.5ea62a8",
|
|
61
|
+
"@dxos/echo": "0.8.4-main.5ea62a8",
|
|
62
|
+
"@dxos/functions": "0.8.4-main.5ea62a8",
|
|
63
|
+
"@dxos/keys": "0.8.4-main.5ea62a8",
|
|
64
|
+
"@dxos/live-object": "0.8.4-main.5ea62a8",
|
|
65
|
+
"@dxos/local-storage": "0.8.4-main.5ea62a8",
|
|
66
|
+
"@dxos/invariant": "0.8.4-main.5ea62a8",
|
|
67
|
+
"@dxos/plugin-deck": "0.8.4-main.5ea62a8",
|
|
68
|
+
"@dxos/plugin-graph": "0.8.4-main.5ea62a8",
|
|
69
|
+
"@dxos/plugin-markdown": "0.8.4-main.5ea62a8",
|
|
70
|
+
"@dxos/plugin-space": "0.8.4-main.5ea62a8",
|
|
71
|
+
"@dxos/plugin-thread": "0.8.4-main.5ea62a8",
|
|
72
|
+
"@dxos/plugin-client": "0.8.4-main.5ea62a8",
|
|
73
|
+
"@dxos/log": "0.8.4-main.5ea62a8",
|
|
74
|
+
"@dxos/protocols": "0.8.4-main.5ea62a8",
|
|
75
|
+
"@dxos/react-client": "0.8.4-main.5ea62a8",
|
|
76
|
+
"@dxos/react-edge-client": "0.8.4-main.5ea62a8",
|
|
77
|
+
"@dxos/react-ui-attention": "0.8.4-main.5ea62a8",
|
|
78
|
+
"@dxos/react-ui-components": "0.8.4-main.5ea62a8",
|
|
79
|
+
"@dxos/react-ui-editor": "0.8.4-main.5ea62a8",
|
|
80
|
+
"@dxos/react-ui-form": "0.8.4-main.5ea62a8",
|
|
81
|
+
"@dxos/react-ui-sfx": "0.8.4-main.5ea62a8",
|
|
82
|
+
"@dxos/react-ui-stack": "0.8.4-main.5ea62a8",
|
|
83
|
+
"@dxos/schema": "0.8.4-main.5ea62a8",
|
|
84
|
+
"@dxos/react-ui-grid": "0.8.4-main.5ea62a8",
|
|
85
|
+
"@dxos/tracing": "0.8.4-main.5ea62a8",
|
|
86
|
+
"@dxos/util": "0.8.4-main.5ea62a8"
|
|
85
87
|
},
|
|
86
88
|
"devDependencies": {
|
|
87
89
|
"@effect-rx/rx-react": "0.38.0",
|
|
88
|
-
"@effect/platform": "0.
|
|
90
|
+
"@effect/platform": "0.90.2",
|
|
89
91
|
"@types/dom-speech-recognition": "^0.0.6",
|
|
90
92
|
"@types/react": "~18.2.0",
|
|
91
|
-
"effect": "3.17.
|
|
93
|
+
"effect": "3.17.7",
|
|
92
94
|
"react": "~18.2.0",
|
|
93
95
|
"react-dom": "~18.2.0",
|
|
94
96
|
"tailwindcss": "~3.4.1",
|
|
95
|
-
"@dxos/plugin-preview": "0.8.4-main.
|
|
96
|
-
"@dxos/plugin-
|
|
97
|
-
"@dxos/
|
|
98
|
-
"@dxos/
|
|
99
|
-
"@dxos/react-ui": "0.8.4-main.
|
|
100
|
-
"@dxos/
|
|
101
|
-
"@dxos/
|
|
102
|
-
"@dxos/react-ui-theme": "0.8.4-main.
|
|
103
|
-
"@dxos/
|
|
104
|
-
"@dxos/
|
|
97
|
+
"@dxos/plugin-preview": "0.8.4-main.5ea62a8",
|
|
98
|
+
"@dxos/plugin-theme": "0.8.4-main.5ea62a8",
|
|
99
|
+
"@dxos/random": "0.8.4-main.5ea62a8",
|
|
100
|
+
"@dxos/plugin-storybook-layout": "0.8.4-main.5ea62a8",
|
|
101
|
+
"@dxos/react-ui-form": "0.8.4-main.5ea62a8",
|
|
102
|
+
"@dxos/storybook-utils": "0.8.4-main.5ea62a8",
|
|
103
|
+
"@dxos/test-utils": "0.8.4-main.5ea62a8",
|
|
104
|
+
"@dxos/react-ui-theme": "0.8.4-main.5ea62a8",
|
|
105
|
+
"@dxos/react-ui": "0.8.4-main.5ea62a8",
|
|
106
|
+
"@dxos/react-ui-syntax-highlighter": "0.8.4-main.5ea62a8"
|
|
105
107
|
},
|
|
106
108
|
"peerDependencies": {
|
|
107
109
|
"@effect-rx/rx-react": "^0.34.1",
|
|
@@ -109,8 +111,8 @@
|
|
|
109
111
|
"effect": "^3.13.3",
|
|
110
112
|
"react": "~18.2.0",
|
|
111
113
|
"react-dom": "~18.2.0",
|
|
112
|
-
"@dxos/react-ui": "0.8.4-main.
|
|
113
|
-
"@dxos/react-ui-theme": "0.8.4-main.
|
|
114
|
+
"@dxos/react-ui": "0.8.4-main.5ea62a8",
|
|
115
|
+
"@dxos/react-ui-theme": "0.8.4-main.5ea62a8"
|
|
114
116
|
},
|
|
115
117
|
"publishConfig": {
|
|
116
118
|
"access": "public"
|
|
@@ -8,11 +8,11 @@ import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
|
|
|
8
8
|
import { getSpace } from '@dxos/react-client/echo';
|
|
9
9
|
import { DataType } from '@dxos/schema';
|
|
10
10
|
|
|
11
|
-
import { IntentResolver, ReactSurface, Transcriber } from './capabilities';
|
|
11
|
+
import { BlueprintDefinition, IntentResolver, ReactSurface, Transcriber } from './capabilities';
|
|
12
12
|
import { renderMarkdown } from './components';
|
|
13
13
|
import { meta } from './meta';
|
|
14
14
|
import { translations } from './translations';
|
|
15
|
-
import {
|
|
15
|
+
import { Transcript } from './types';
|
|
16
16
|
|
|
17
17
|
export const TranscriptionPlugin = () =>
|
|
18
18
|
definePlugin(meta, [
|
|
@@ -26,11 +26,11 @@ export const TranscriptionPlugin = () =>
|
|
|
26
26
|
activatesOn: Events.SetupMetadata,
|
|
27
27
|
activate: (context) =>
|
|
28
28
|
contributes(Capabilities.Metadata, {
|
|
29
|
-
id:
|
|
29
|
+
id: Transcript.Transcript.typename,
|
|
30
30
|
metadata: {
|
|
31
31
|
icon: 'ph--subtitles--regular',
|
|
32
32
|
// TODO(wittjosiah): Factor out. Artifact? Separate capability?
|
|
33
|
-
getTextContent: async (transcript:
|
|
33
|
+
getTextContent: async (transcript: Transcript.Transcript) => {
|
|
34
34
|
const space = getSpace(transcript);
|
|
35
35
|
const members = space?.members.get().map((member) => member.identity) ?? [];
|
|
36
36
|
const queue = space?.queues.get<DataType.Message>(transcript.queue.dxn);
|
|
@@ -47,7 +47,7 @@ export const TranscriptionPlugin = () =>
|
|
|
47
47
|
defineModule({
|
|
48
48
|
id: `${meta.id}/module/schema`,
|
|
49
49
|
activatesOn: ClientEvents.SetupSchema,
|
|
50
|
-
activate: () => [contributes(ClientCapabilities.Schema, [
|
|
50
|
+
activate: () => [contributes(ClientCapabilities.Schema, [Transcript.Transcript])],
|
|
51
51
|
}),
|
|
52
52
|
defineModule({
|
|
53
53
|
id: `${meta.id}/module/react-surface`,
|
|
@@ -64,4 +64,9 @@ export const TranscriptionPlugin = () =>
|
|
|
64
64
|
activatesOn: Events.SetupAppGraph,
|
|
65
65
|
activate: Transcriber,
|
|
66
66
|
}),
|
|
67
|
+
defineModule({
|
|
68
|
+
id: `${meta.id}/module/blueprint`,
|
|
69
|
+
activatesOn: Events.SetupArtifactDefinition,
|
|
70
|
+
activate: BlueprintDefinition,
|
|
71
|
+
}),
|
|
67
72
|
]);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Capabilities, contributes } from '@dxos/app-framework';
|
|
6
|
+
import { Blueprint, Template } from '@dxos/blueprints';
|
|
7
|
+
import { type FunctionDefinition } from '@dxos/functions';
|
|
8
|
+
import { trim } from '@dxos/util';
|
|
9
|
+
|
|
10
|
+
import { open, summarize } from '../functions';
|
|
11
|
+
|
|
12
|
+
const functions: FunctionDefinition[] = [open, summarize];
|
|
13
|
+
|
|
14
|
+
export default () => {
|
|
15
|
+
return [
|
|
16
|
+
contributes(Capabilities.Functions, functions),
|
|
17
|
+
contributes(
|
|
18
|
+
Capabilities.BlueprintDefinition,
|
|
19
|
+
Blueprint.make({
|
|
20
|
+
key: 'dxos.org/blueprint/transcription',
|
|
21
|
+
name: 'Transcription',
|
|
22
|
+
tools: Blueprint.toolDefinitions({ functions }),
|
|
23
|
+
instructions: Template.make({
|
|
24
|
+
source: trim`
|
|
25
|
+
You can open and summarize a meeting transcript.
|
|
26
|
+
`,
|
|
27
|
+
}),
|
|
28
|
+
}),
|
|
29
|
+
),
|
|
30
|
+
];
|
|
31
|
+
};
|
|
@@ -6,11 +6,11 @@ import { defineCapability } from '@dxos/app-framework';
|
|
|
6
6
|
|
|
7
7
|
import { TRANSCRIPTION_PLUGIN } from '../meta';
|
|
8
8
|
import {
|
|
9
|
-
type
|
|
9
|
+
type MediaStreamRecorderParams,
|
|
10
10
|
type Transcriber,
|
|
11
|
-
type
|
|
11
|
+
type TranscriberParams,
|
|
12
12
|
type TranscriptMessageEnricher,
|
|
13
|
-
type
|
|
13
|
+
type TranscriptionManager,
|
|
14
14
|
} from '../transcriber';
|
|
15
15
|
|
|
16
16
|
export namespace TranscriptionCapabilities {
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { lazy } from '@dxos/app-framework';
|
|
6
6
|
|
|
7
|
+
export const BlueprintDefinition = lazy(() => import('./blueprint-definition'));
|
|
7
8
|
export const IntentResolver = lazy(() => import('./intent-resolver'));
|
|
8
9
|
export const ReactSurface = lazy(() => import('./react-surface'));
|
|
9
10
|
export const Transcriber = lazy(() => import('./transcriber'));
|
|
@@ -2,22 +2,16 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { Capabilities, contributes, createResolver
|
|
6
|
-
import { type Key, Obj, Ref } from '@dxos/echo';
|
|
7
|
-
import { createQueueDXN } from '@dxos/echo-schema';
|
|
5
|
+
import { Capabilities, type PluginContext, contributes, createResolver } from '@dxos/app-framework';
|
|
8
6
|
|
|
9
|
-
import {
|
|
7
|
+
import { Transcript, TranscriptAction } from '../types';
|
|
10
8
|
|
|
11
9
|
export default (context: PluginContext) =>
|
|
12
10
|
contributes(Capabilities.IntentResolver, [
|
|
13
11
|
createResolver({
|
|
14
|
-
intent:
|
|
15
|
-
resolve: ({ name,
|
|
16
|
-
const transcript =
|
|
17
|
-
// TODO(dmaretskyi): Use space.queues.create() instead.
|
|
18
|
-
queue: Ref.fromDXN(createQueueDXN(spaceId as Key.SpaceId)),
|
|
19
|
-
});
|
|
20
|
-
|
|
12
|
+
intent: TranscriptAction.Create,
|
|
13
|
+
resolve: ({ name, space }) => {
|
|
14
|
+
const transcript = Transcript.makeTranscript(space.queues.create().dxn);
|
|
21
15
|
return { data: { object: transcript } };
|
|
22
16
|
},
|
|
23
17
|
}),
|
|
@@ -9,14 +9,14 @@ import { Obj } from '@dxos/echo';
|
|
|
9
9
|
|
|
10
10
|
import { TranscriptionContainer } from '../components';
|
|
11
11
|
import { meta } from '../meta';
|
|
12
|
-
import {
|
|
12
|
+
import { Transcript } from '../types';
|
|
13
13
|
|
|
14
14
|
export default () =>
|
|
15
15
|
contributes(Capabilities.ReactSurface, [
|
|
16
16
|
createSurface({
|
|
17
17
|
id: `${meta.id}/article/transcript`,
|
|
18
18
|
role: ['article', 'section'],
|
|
19
|
-
filter: (data): data is { subject:
|
|
19
|
+
filter: (data): data is { subject: Transcript.Transcript } => Obj.instanceOf(Transcript.Transcript, data.subject),
|
|
20
20
|
component: ({ data, role }) => <TranscriptionContainer transcript={data.subject} role={role} />,
|
|
21
21
|
}),
|
|
22
22
|
]);
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { type PluginContext, contributes } from '@dxos/app-framework';
|
|
6
6
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
7
7
|
|
|
8
|
-
import { TranscriptionCapabilities } from './capabilities';
|
|
9
8
|
import { MediaStreamRecorder, Transcriber, TranscriptionManager } from '../transcriber';
|
|
10
9
|
|
|
10
|
+
import { TranscriptionCapabilities } from './capabilities';
|
|
11
|
+
|
|
11
12
|
// TODO(burdon): Move to config?
|
|
12
13
|
|
|
13
14
|
/**
|
|
@@ -24,7 +24,6 @@ import { DataType } from '@dxos/schema';
|
|
|
24
24
|
import { Testing } from '@dxos/schema/testing';
|
|
25
25
|
import { withLayout } from '@dxos/storybook-utils';
|
|
26
26
|
|
|
27
|
-
import { renderMarkdown, Transcript, type TranscriptProps } from './Transcript';
|
|
28
27
|
import { useQueueModelAdapter } from '../../hooks';
|
|
29
28
|
import { SerializationModel } from '../../model';
|
|
30
29
|
import {
|
|
@@ -35,13 +34,15 @@ import {
|
|
|
35
34
|
} from '../../testing';
|
|
36
35
|
import { translations } from '../../translations';
|
|
37
36
|
|
|
37
|
+
import { TranscriptView, type TranscriptViewProps, renderMarkdown } from './Transcript';
|
|
38
|
+
|
|
38
39
|
faker.seed(1);
|
|
39
40
|
|
|
40
41
|
/**
|
|
41
42
|
* Story wrapper with test controls.
|
|
42
43
|
*/
|
|
43
44
|
const TranscriptContainer: FC<
|
|
44
|
-
|
|
45
|
+
TranscriptViewProps & {
|
|
45
46
|
running: boolean;
|
|
46
47
|
onRunningChange: (running: boolean) => void;
|
|
47
48
|
onReset?: () => void;
|
|
@@ -49,7 +50,7 @@ const TranscriptContainer: FC<
|
|
|
49
50
|
> = ({ space, model, running, onRunningChange, onReset }) => {
|
|
50
51
|
return (
|
|
51
52
|
<div className='grid grid-rows-[1fr_40px] grow divide-y divide-separator'>
|
|
52
|
-
<
|
|
53
|
+
<TranscriptView space={space} model={model} />
|
|
53
54
|
<div className='grid grid-cols-[1fr_16rem] overflow-hidden'>
|
|
54
55
|
<div className='flex items-center'>
|
|
55
56
|
<SyntaxHighlighter language='json' className='text-sm'>
|
|
@@ -69,7 +70,7 @@ const TranscriptContainer: FC<
|
|
|
69
70
|
);
|
|
70
71
|
};
|
|
71
72
|
|
|
72
|
-
type StoryProps = { messages?: DataType.Message[] } & Pick<
|
|
73
|
+
type StoryProps = { messages?: DataType.Message[] } & Pick<TranscriptViewProps, 'ignoreAttention' | 'attendableId'>;
|
|
73
74
|
|
|
74
75
|
/**
|
|
75
76
|
* Basic story mutates array of messages.
|
|
@@ -178,7 +179,7 @@ const QueueStoryWrapper = () => {
|
|
|
178
179
|
return <QueueStory key={key} queueId={queueId} onReset={handleReset} />;
|
|
179
180
|
};
|
|
180
181
|
|
|
181
|
-
const meta
|
|
182
|
+
const meta = {
|
|
182
183
|
title: 'plugins/plugin-transcription/Transcript',
|
|
183
184
|
decorators: [
|
|
184
185
|
withPluginManager({
|
|
@@ -187,7 +188,7 @@ const meta: Meta<typeof QueueStory> = {
|
|
|
187
188
|
StorybookLayoutPlugin(),
|
|
188
189
|
ClientPlugin({
|
|
189
190
|
types: [TestItem, Testing.DocumentType, DataType.Person, DataType.Organization],
|
|
190
|
-
onClientInitialized: async (
|
|
191
|
+
onClientInitialized: async ({ client }) => {
|
|
191
192
|
await client.halo.createIdentity();
|
|
192
193
|
},
|
|
193
194
|
}),
|
|
@@ -202,13 +203,11 @@ const meta: Meta<typeof QueueStory> = {
|
|
|
202
203
|
parameters: {
|
|
203
204
|
translations,
|
|
204
205
|
},
|
|
205
|
-
};
|
|
206
|
+
} satisfies Meta;
|
|
206
207
|
|
|
207
208
|
export default meta;
|
|
208
209
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
export const Default: Story = {
|
|
210
|
+
export const Default: StoryObj<typeof BasicStory> = {
|
|
212
211
|
render: BasicStory,
|
|
213
212
|
args: {
|
|
214
213
|
ignoreAttention: true,
|
|
@@ -217,7 +216,7 @@ export const Default: Story = {
|
|
|
217
216
|
},
|
|
218
217
|
};
|
|
219
218
|
|
|
220
|
-
export const Empty:
|
|
219
|
+
export const Empty: StoryObj<typeof BasicStory> = {
|
|
221
220
|
render: BasicStory,
|
|
222
221
|
args: {
|
|
223
222
|
ignoreAttention: true,
|
|
@@ -225,7 +224,7 @@ export const Empty: Story = {
|
|
|
225
224
|
},
|
|
226
225
|
};
|
|
227
226
|
|
|
228
|
-
export const WithQueue:
|
|
227
|
+
export const WithQueue: StoryObj<typeof QueueStoryWrapper> = {
|
|
229
228
|
render: QueueStoryWrapper,
|
|
230
229
|
args: {
|
|
231
230
|
ignoreAttention: true,
|
|
@@ -233,7 +232,7 @@ export const WithQueue: Story = {
|
|
|
233
232
|
},
|
|
234
233
|
};
|
|
235
234
|
|
|
236
|
-
export const WithEntityExtractionQueue:
|
|
235
|
+
export const WithEntityExtractionQueue: StoryObj<typeof EntityExtractionQueueStory> = {
|
|
237
236
|
render: EntityExtractionQueueStory,
|
|
238
237
|
args: {
|
|
239
238
|
ignoreAttention: true,
|
|
@@ -21,9 +21,10 @@ import { mx } from '@dxos/react-ui-theme';
|
|
|
21
21
|
import { type DataType } from '@dxos/schema';
|
|
22
22
|
import { isNotFalsy } from '@dxos/util';
|
|
23
23
|
|
|
24
|
-
import { transcript } from './transcript-extension';
|
|
25
24
|
import { type SerializationModel } from '../../model';
|
|
26
|
-
import { type
|
|
25
|
+
import { type Transcript } from '../../types';
|
|
26
|
+
|
|
27
|
+
import { transcript } from './transcript-extension';
|
|
27
28
|
|
|
28
29
|
export const renderMarkdown =
|
|
29
30
|
(identities: Identity[]) =>
|
|
@@ -50,8 +51,8 @@ export const renderMarkdown =
|
|
|
50
51
|
];
|
|
51
52
|
};
|
|
52
53
|
|
|
53
|
-
export type
|
|
54
|
-
transcript?:
|
|
54
|
+
export type TranscriptViewProps = ThemedClassName<{
|
|
55
|
+
transcript?: Transcript.Transcript;
|
|
55
56
|
space?: Space;
|
|
56
57
|
model: SerializationModel<DataType.Message>;
|
|
57
58
|
// TODO(wittjosiah): Move to container.
|
|
@@ -62,19 +63,19 @@ export type TranscriptProps = ThemedClassName<{
|
|
|
62
63
|
/**
|
|
63
64
|
* Transcript component implemented using the editor.
|
|
64
65
|
*/
|
|
65
|
-
export const
|
|
66
|
+
export const TranscriptView = ({
|
|
66
67
|
classNames,
|
|
67
68
|
transcript: object,
|
|
68
69
|
space,
|
|
69
70
|
model,
|
|
70
71
|
attendableId,
|
|
71
72
|
ignoreAttention,
|
|
72
|
-
}:
|
|
73
|
+
}: TranscriptViewProps) => {
|
|
73
74
|
const { themeMode } = useThemeContext();
|
|
74
75
|
const { parentRef } = useTextEditor(() => {
|
|
75
76
|
return {
|
|
76
77
|
extensions: [
|
|
77
|
-
createBasicExtensions({ readOnly: true, lineWrapping: true }),
|
|
78
|
+
createBasicExtensions({ readOnly: true, lineWrapping: true, search: true }),
|
|
78
79
|
createMarkdownExtensions({ themeMode }),
|
|
79
80
|
createThemeExtensions({ themeMode }),
|
|
80
81
|
decorateMarkdown(),
|
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
import { intervalToDuration } from 'date-fns/intervalToDuration';
|
|
6
6
|
import { Schema } from 'effect';
|
|
7
7
|
import { yieldOrContinue } from 'main-thread-scheduling';
|
|
8
|
-
import React, { type FC, useCallback, useEffect, useMemo, useRef, useState
|
|
8
|
+
import React, { type FC, type WheelEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
9
9
|
import { type OnResizeCallback, useResizeDetector } from 'react-resize-detector';
|
|
10
10
|
|
|
11
11
|
import { Type } from '@dxos/echo';
|
|
12
12
|
import { IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';
|
|
13
13
|
import { useAttention } from '@dxos/react-ui-attention';
|
|
14
14
|
import {
|
|
15
|
+
type DxGridAxisMeta,
|
|
15
16
|
type DxGridCellValue,
|
|
16
17
|
type DxGridElement,
|
|
17
|
-
type DxGridAxisMeta,
|
|
18
18
|
type DxGridPlaneCells,
|
|
19
19
|
Grid,
|
|
20
20
|
toPlaneCellIndex,
|
|
@@ -115,7 +115,7 @@ const measureRows = async (
|
|
|
115
115
|
return result;
|
|
116
116
|
};
|
|
117
117
|
|
|
118
|
-
export type
|
|
118
|
+
export type TranscriptViewProps = ThemedClassName<{
|
|
119
119
|
blocks?: TranscriptBlock[];
|
|
120
120
|
attendableId?: string;
|
|
121
121
|
ignoreAttention?: boolean;
|
|
@@ -124,7 +124,7 @@ export type TranscriptProps = ThemedClassName<{
|
|
|
124
124
|
/**
|
|
125
125
|
* @@deprecated
|
|
126
126
|
*/
|
|
127
|
-
export const Transcript: FC<
|
|
127
|
+
export const Transcript: FC<TranscriptViewProps> = ({ classNames, blocks, attendableId, ignoreAttention }) => {
|
|
128
128
|
const { t } = useTranslation(TRANSCRIPTION_PLUGIN);
|
|
129
129
|
const [dxGrid, setDxGrid] = useState<DxGridElement | null>(null);
|
|
130
130
|
const [rows, setRows] = useState<DxGridAxisMeta | undefined>(undefined);
|
|
@@ -9,13 +9,14 @@ import { useMembers, useQueue } from '@dxos/react-client/echo';
|
|
|
9
9
|
import { StackItem } from '@dxos/react-ui-stack';
|
|
10
10
|
import { type DataType } from '@dxos/schema';
|
|
11
11
|
|
|
12
|
-
import { Transcript, renderMarkdown } from './Transcript';
|
|
13
12
|
import { useQueueModelAdapter } from '../hooks';
|
|
14
|
-
import { type
|
|
13
|
+
import { type Transcript } from '../types';
|
|
14
|
+
|
|
15
|
+
import { TranscriptView, renderMarkdown } from './Transcript';
|
|
15
16
|
|
|
16
17
|
export type TranscriptionContainerProps = {
|
|
17
18
|
role: string;
|
|
18
|
-
transcript:
|
|
19
|
+
transcript: Transcript.Transcript;
|
|
19
20
|
};
|
|
20
21
|
|
|
21
22
|
export const TranscriptionContainer = ({ transcript }: TranscriptionContainerProps) => {
|
|
@@ -27,7 +28,7 @@ export const TranscriptionContainer = ({ transcript }: TranscriptionContainerPro
|
|
|
27
28
|
|
|
28
29
|
return (
|
|
29
30
|
<StackItem.Content classNames='container-max-width pli-2'>
|
|
30
|
-
<
|
|
31
|
+
<TranscriptView attendableId={attendableId} space={space} model={model} transcript={transcript} />
|
|
31
32
|
</StackItem.Content>
|
|
32
33
|
);
|
|
33
34
|
};
|
|
@@ -23,18 +23,19 @@ import { StorybookLayoutPlugin } from '@dxos/plugin-storybook-layout';
|
|
|
23
23
|
import { ThemePlugin } from '@dxos/plugin-theme';
|
|
24
24
|
import { defaultTx } from '@dxos/react-ui-theme';
|
|
25
25
|
import { DataType } from '@dxos/schema';
|
|
26
|
-
import {
|
|
26
|
+
import { Testing, seedTestData } from '@dxos/schema/testing';
|
|
27
27
|
import { withLayout, withTheme } from '@dxos/storybook-utils';
|
|
28
28
|
|
|
29
|
-
import { TranscriptionStory } from './TranscriptionStory';
|
|
30
|
-
import { useIsSpeaking } from './useIsSpeaking';
|
|
31
|
-
import { TranscriptionPlugin } from '../../TranscriptionPlugin';
|
|
32
29
|
import { useAudioFile, useQueueModelAdapter, useTranscriber } from '../../hooks';
|
|
33
|
-
import {
|
|
30
|
+
import { MessageNormalizer, getActorId } from '../../segments-normalization';
|
|
34
31
|
import { TestItem } from '../../testing';
|
|
35
32
|
import { type MediaStreamRecorderParams, type TranscriberParams } from '../../transcriber';
|
|
33
|
+
import { TranscriptionPlugin } from '../../TranscriptionPlugin';
|
|
36
34
|
import { renderMarkdown } from '../Transcript';
|
|
37
35
|
|
|
36
|
+
import { TranscriptionStory } from './TranscriptionStory';
|
|
37
|
+
import { useIsSpeaking } from './useIsSpeaking';
|
|
38
|
+
|
|
38
39
|
const AudioFile = ({
|
|
39
40
|
detectSpeaking,
|
|
40
41
|
audioUrl,
|
|
@@ -67,7 +68,6 @@ const AudioFile = ({
|
|
|
67
68
|
|
|
68
69
|
useEffect(() => {
|
|
69
70
|
if (!audio) {
|
|
70
|
-
log.warn('no audio');
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -146,10 +146,10 @@ const AudioFile = ({
|
|
|
146
146
|
}, [normalizer]);
|
|
147
147
|
|
|
148
148
|
const manageChunkRecording = () => {
|
|
149
|
-
if (running && isSpeaking) {
|
|
149
|
+
if (running && isSpeaking && transcriber) {
|
|
150
150
|
log.info('starting transcription');
|
|
151
151
|
transcriber?.startChunksRecording();
|
|
152
|
-
} else if (!isSpeaking || !running) {
|
|
152
|
+
} else if ((!isSpeaking || !running) && transcriber) {
|
|
153
153
|
log.info('stopping transcription');
|
|
154
154
|
transcriber?.stopChunksRecording();
|
|
155
155
|
}
|
|
@@ -175,10 +175,18 @@ const AudioFile = ({
|
|
|
175
175
|
manageChunkRecording();
|
|
176
176
|
}, [isSpeaking, stream]);
|
|
177
177
|
|
|
178
|
-
return
|
|
178
|
+
return (
|
|
179
|
+
<TranscriptionStory
|
|
180
|
+
disabled={!stream}
|
|
181
|
+
model={model}
|
|
182
|
+
running={running}
|
|
183
|
+
onRunningChange={setRunning}
|
|
184
|
+
audioRef={ref}
|
|
185
|
+
/>
|
|
186
|
+
);
|
|
179
187
|
};
|
|
180
188
|
|
|
181
|
-
const meta
|
|
189
|
+
const meta = {
|
|
182
190
|
title: 'plugins/plugin-transcription/FileTranscription',
|
|
183
191
|
decorators: [
|
|
184
192
|
withPluginManager({
|
|
@@ -187,7 +195,7 @@ const meta: Meta<typeof AudioFile> = {
|
|
|
187
195
|
StorybookLayoutPlugin(),
|
|
188
196
|
ClientPlugin({
|
|
189
197
|
types: [TestItem, DataType.Person, DataType.Organization, Testing.DocumentType],
|
|
190
|
-
onClientInitialized: async (
|
|
198
|
+
onClientInitialized: async ({ client }) => {
|
|
191
199
|
await client.halo.createIdentity();
|
|
192
200
|
await client.spaces.waitUntilReady();
|
|
193
201
|
await client.spaces.default.waitUntilReady();
|
|
@@ -205,10 +213,12 @@ const meta: Meta<typeof AudioFile> = {
|
|
|
205
213
|
withTheme,
|
|
206
214
|
withLayout({ fullscreen: true, classNames: 'justify-center' }),
|
|
207
215
|
],
|
|
208
|
-
};
|
|
216
|
+
} satisfies Meta;
|
|
209
217
|
|
|
210
218
|
export default meta;
|
|
211
219
|
|
|
220
|
+
type Story = StoryObj<typeof meta>;
|
|
221
|
+
|
|
212
222
|
const TRANSCRIBER_CONFIG = {
|
|
213
223
|
transcribeAfterChunksAmount: 100,
|
|
214
224
|
prefixBufferChunksAmount: 50,
|