@dxos/plugin-transcription 0.9.0 → 0.9.1-staging.ee54ba693a
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/PLUGIN.mdl +25 -5
- package/dist/lib/neutral/{TranscriptionArticle-L6XANBH5.mjs → TranscriptionArticle-FEWCWG4A.mjs} +4 -7
- package/dist/lib/neutral/TranscriptionArticle-FEWCWG4A.mjs.map +7 -0
- package/dist/lib/neutral/TranscriptionPlugin.mjs +29 -6
- package/dist/lib/neutral/TranscriptionPlugin.mjs.map +4 -4
- package/dist/lib/neutral/TranscriptionPlugin.node.mjs +3 -3
- package/dist/lib/neutral/TranscriptionPlugin.node.mjs.map +3 -3
- package/dist/lib/neutral/app-graph-builder-GQRMI22E.mjs +48 -0
- package/dist/lib/neutral/app-graph-builder-GQRMI22E.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +19 -5
- package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
- package/dist/lib/neutral/chunk-5BVHY75B.mjs +54 -0
- package/dist/lib/neutral/chunk-5BVHY75B.mjs.map +7 -0
- package/dist/lib/neutral/chunk-HNXSU7HJ.mjs +8 -0
- package/dist/lib/neutral/{chunk-KXJZEYS7.mjs.map → chunk-HNXSU7HJ.mjs.map} +2 -2
- package/dist/lib/neutral/chunk-KOXLGGSL.mjs +30 -0
- package/dist/lib/neutral/chunk-KOXLGGSL.mjs.map +7 -0
- package/dist/lib/neutral/chunk-MDV7NBFJ.mjs +182 -0
- package/dist/lib/neutral/chunk-MDV7NBFJ.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +114 -258
- package/dist/lib/neutral/components/index.mjs.map +4 -4
- package/dist/lib/neutral/containers/index.mjs +1 -1
- package/dist/lib/neutral/{create-RVR7VC33.mjs → create-HNHGCKZ4.mjs} +2 -2
- package/dist/lib/neutral/enrich-message-DSJU4TXC.mjs +24 -0
- package/dist/lib/neutral/enrich-message-DSJU4TXC.mjs.map +7 -0
- package/dist/lib/neutral/entity-lookup-PCDW7NC4.mjs +25 -0
- package/dist/lib/neutral/entity-lookup-PCDW7NC4.mjs.map +7 -0
- package/dist/lib/neutral/hooks/index.mjs +93 -15
- package/dist/lib/neutral/hooks/index.mjs.map +4 -4
- package/dist/lib/neutral/index.mjs +8 -32
- package/dist/lib/neutral/markdown-extension-CCDXXY7E.mjs +16 -0
- package/dist/lib/neutral/markdown-extension-CCDXXY7E.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/meta.mjs +1 -1
- package/dist/lib/neutral/{open-A5KXKRH4.mjs → open-SNMZXXYO.mjs} +4 -6
- package/dist/lib/neutral/open-SNMZXXYO.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +1 -1
- package/dist/lib/neutral/pipeline-status-XMWMAUJY.mjs +17 -0
- package/dist/lib/neutral/pipeline-status-XMWMAUJY.mjs.map +7 -0
- package/dist/lib/neutral/plugin.mjs +2 -2
- package/dist/lib/neutral/recording-session-IADO7ATU.mjs +15 -0
- package/dist/lib/neutral/recording-session-IADO7ATU.mjs.map +7 -0
- package/dist/lib/neutral/settings-7KE4MABW.mjs +31 -0
- package/dist/lib/neutral/settings-7KE4MABW.mjs.map +7 -0
- package/dist/lib/neutral/skill-definition-DXNK324V.mjs +15 -0
- package/dist/lib/neutral/skill-definition-DXNK324V.mjs.map +7 -0
- package/dist/lib/neutral/skills/index.mjs +8 -0
- package/dist/lib/neutral/{summarize-5XPPMVTE.mjs → summarize-LBUZTOTH.mjs} +4 -4
- package/dist/lib/neutral/summarize-LBUZTOTH.mjs.map +7 -0
- package/dist/lib/neutral/{text-content-KBB37HSM.mjs → text-content-NOWR642C.mjs} +9 -9
- package/dist/lib/neutral/text-content-NOWR642C.mjs.map +7 -0
- package/dist/lib/neutral/transcriber-6XZHUUHK.mjs +174 -0
- package/dist/lib/neutral/transcriber-6XZHUUHK.mjs.map +7 -0
- package/dist/lib/neutral/transcription-driver-DN6ELQXZ.mjs +207 -0
- package/dist/lib/neutral/transcription-driver-DN6ELQXZ.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +8 -1
- package/dist/lib/neutral/translations.mjs.map +3 -3
- package/dist/lib/neutral/types/index.mjs +3 -1
- package/dist/types/dx.config.d.ts +28 -0
- package/dist/types/dx.config.d.ts.map +1 -0
- package/dist/types/src/TranscriptionPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +5 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/entity-lookup.d.ts +10 -0
- package/dist/types/src/capabilities/entity-lookup.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +11 -8
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown-extension.d.ts +5 -0
- package/dist/types/src/capabilities/markdown-extension.d.ts.map +1 -0
- package/dist/types/src/capabilities/pipeline-status.d.ts +9 -0
- package/dist/types/src/capabilities/pipeline-status.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/recording-session.d.ts +5 -0
- package/dist/types/src/capabilities/recording-session.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings.d.ts +5 -0
- package/dist/types/src/capabilities/settings.d.ts.map +1 -0
- package/dist/types/src/capabilities/skill-definition.d.ts +5 -0
- package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/text-content.d.ts +1 -4
- package/dist/types/src/capabilities/transcriber.d.ts +4 -3
- package/dist/types/src/capabilities/transcriber.d.ts.map +1 -1
- package/dist/types/src/capabilities/transcription-driver.d.ts +5 -0
- package/dist/types/src/capabilities/transcription-driver.d.ts.map +1 -0
- package/dist/types/src/components/Mic/Mic.d.ts +12 -0
- package/dist/types/src/components/Mic/Mic.d.ts.map +1 -0
- package/dist/types/src/components/{Oracle/Oracle.stories.d.ts → Mic/Mic.stories.d.ts} +9 -7
- package/dist/types/src/components/Mic/Mic.stories.d.ts.map +1 -0
- package/dist/types/src/components/Mic/index.d.ts +2 -0
- package/dist/types/src/components/Mic/index.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +1 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/TranscriptionArticle/TranscriptionArticle.d.ts.map +1 -1
- package/dist/types/src/containers/TranscriptionArticle/TranscriptionArticle.stories.d.ts +7 -0
- package/dist/types/src/containers/TranscriptionArticle/TranscriptionArticle.stories.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +0 -5
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useTranscriptionRecording.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +32 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/normalization/message-normalizer.d.ts +2 -2
- package/dist/types/src/normalization/message-normalizer.d.ts.map +1 -1
- package/dist/types/src/normalization/normalization.d.ts +98 -733
- package/dist/types/src/normalization/normalization.d.ts.map +1 -1
- package/dist/types/src/operations/enrich-message.d.ts +9 -0
- package/dist/types/src/operations/enrich-message.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts.map +1 -1
- package/dist/types/src/operations/open.d.ts.map +1 -1
- package/dist/types/src/operations/summarize.d.ts.map +1 -1
- package/dist/types/src/skills/index.d.ts +2 -0
- package/dist/types/src/skills/index.d.ts.map +1 -0
- package/dist/types/src/skills/transcription-skill.d.ts +4 -0
- package/dist/types/src/skills/transcription-skill.d.ts.map +1 -0
- package/dist/types/src/stories/Keyword.stories.d.ts +51 -0
- package/dist/types/src/stories/Keyword.stories.d.ts.map +1 -0
- package/dist/types/src/stories/Pipeline.stories.d.ts +60 -0
- package/dist/types/src/stories/Pipeline.stories.d.ts.map +1 -0
- package/dist/types/src/stories/Transcription.stories.d.ts +23 -0
- package/dist/types/src/stories/Transcription.stories.d.ts.map +1 -0
- package/dist/types/src/testing/decorators.d.ts +21 -0
- package/dist/types/src/testing/decorators.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/testing.d.ts +3 -13
- package/dist/types/src/testing/testing.d.ts.map +1 -1
- package/dist/types/src/{transcriber/transcription-manager.d.ts → transcription-manager.d.ts} +6 -5
- package/dist/types/src/transcription-manager.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +7 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Settings.d.ts +13 -0
- package/dist/types/src/types/Settings.d.ts.map +1 -0
- package/dist/types/src/types/TranscriptOperation.d.ts +114 -1564
- package/dist/types/src/types/TranscriptOperation.d.ts.map +1 -1
- package/dist/types/src/types/TranscriptionCapabilities.d.ts +52 -11
- package/dist/types/src/types/TranscriptionCapabilities.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts +1 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/util/index.d.ts +0 -3
- package/dist/types/src/util/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dx.config.ts +42 -0
- package/package.json +69 -69
- package/src/TranscriptionPlugin.node.ts +2 -2
- package/src/TranscriptionPlugin.test.ts +2 -2
- package/src/TranscriptionPlugin.tsx +40 -3
- package/src/capabilities/app-graph-builder.tsx +49 -0
- package/src/capabilities/entity-lookup.ts +32 -0
- package/src/capabilities/index.ts +8 -7
- package/src/capabilities/markdown-extension.ts +17 -0
- package/src/capabilities/pipeline-status.ts +23 -0
- package/src/capabilities/recording-session.ts +17 -0
- package/src/capabilities/settings.ts +34 -0
- package/src/capabilities/skill-definition.ts +15 -0
- package/src/capabilities/text-content.ts +10 -7
- package/src/capabilities/transcriber.ts +5 -48
- package/src/capabilities/transcription-driver.tsx +263 -0
- package/src/components/Mic/Mic.stories.tsx +66 -0
- package/src/components/Mic/Mic.tsx +136 -0
- package/src/components/Mic/index.ts +5 -0
- package/src/components/index.ts +1 -2
- package/src/containers/TranscriptionArticle/TranscriptionArticle.stories.tsx +4 -0
- package/src/containers/TranscriptionArticle/TranscriptionArticle.tsx +5 -6
- package/src/hooks/index.ts +0 -5
- package/src/hooks/useTranscriptionRecording.ts +27 -9
- package/src/index.ts +1 -5
- package/src/meta.ts +2 -35
- package/src/normalization/message-normalizer.ts +3 -3
- package/src/normalization/normalization.ts +3 -0
- package/src/operations/enrich-message.ts +27 -0
- package/src/operations/index.ts +1 -0
- package/src/operations/open.ts +2 -2
- package/src/operations/summarize.ts +2 -2
- package/src/skills/index.ts +5 -0
- package/src/skills/transcription-skill.ts +29 -0
- package/src/stories/Keyword.stories.tsx +98 -0
- package/src/stories/Pipeline.stories.tsx +361 -0
- package/src/stories/Transcription.stories.tsx +178 -0
- package/src/testing/decorators.ts +78 -0
- package/src/testing/index.ts +1 -0
- package/src/testing/testing.ts +14 -134
- package/src/{transcriber/transcription-manager.ts → transcription-manager.ts} +13 -12
- package/src/translations.ts +9 -1
- package/src/types/Settings.ts +59 -0
- package/src/types/TranscriptOperation.ts +22 -4
- package/src/types/TranscriptionCapabilities.ts +61 -20
- package/src/types/index.ts +1 -0
- package/src/util/index.ts +0 -3
- package/dist/lib/neutral/TranscriptionArticle-L6XANBH5.mjs.map +0 -7
- package/dist/lib/neutral/blueprint-definition-DA4QFRYJ.mjs +0 -15
- package/dist/lib/neutral/blueprint-definition-DA4QFRYJ.mjs.map +0 -7
- package/dist/lib/neutral/blueprints/index.mjs +0 -8
- package/dist/lib/neutral/chunk-FHNI26QW.mjs +0 -45
- package/dist/lib/neutral/chunk-FHNI26QW.mjs.map +0 -7
- package/dist/lib/neutral/chunk-KAEXRX3Y.mjs +0 -35
- package/dist/lib/neutral/chunk-KAEXRX3Y.mjs.map +0 -7
- package/dist/lib/neutral/chunk-KMT3BMMQ.mjs +0 -124
- package/dist/lib/neutral/chunk-KMT3BMMQ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-KXJZEYS7.mjs +0 -8
- package/dist/lib/neutral/chunk-MLRJWAQH.mjs +0 -179
- package/dist/lib/neutral/chunk-MLRJWAQH.mjs.map +0 -7
- package/dist/lib/neutral/chunk-TO77KAQK.mjs +0 -298
- package/dist/lib/neutral/chunk-TO77KAQK.mjs.map +0 -7
- package/dist/lib/neutral/chunk-TX3NQISZ.mjs +0 -435
- package/dist/lib/neutral/chunk-TX3NQISZ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ZR4BH4QQ.mjs +0 -30
- package/dist/lib/neutral/chunk-ZR4BH4QQ.mjs.map +0 -7
- package/dist/lib/neutral/open-A5KXKRH4.mjs.map +0 -7
- package/dist/lib/neutral/summarize-5XPPMVTE.mjs.map +0 -7
- package/dist/lib/neutral/text-content-KBB37HSM.mjs.map +0 -7
- package/dist/lib/neutral/transcriber-OGSF3XO5.mjs +0 -59
- package/dist/lib/neutral/transcriber-OGSF3XO5.mjs.map +0 -7
- package/dist/types/src/blueprints/index.d.ts +0 -2
- package/dist/types/src/blueprints/index.d.ts.map +0 -1
- package/dist/types/src/blueprints/transcription-blueprint.d.ts +0 -4
- package/dist/types/src/blueprints/transcription-blueprint.d.ts.map +0 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -6
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
- package/dist/types/src/components/Oracle/Oracle.d.ts +0 -24
- package/dist/types/src/components/Oracle/Oracle.d.ts.map +0 -1
- package/dist/types/src/components/Oracle/Oracle.stories.d.ts.map +0 -1
- package/dist/types/src/components/Oracle/index.d.ts +0 -2
- package/dist/types/src/components/Oracle/index.d.ts.map +0 -1
- package/dist/types/src/components/Transcription/Transcription.d.ts +0 -11
- package/dist/types/src/components/Transcription/Transcription.d.ts.map +0 -1
- package/dist/types/src/components/Transcription/Transcription.stories.d.ts +0 -37
- package/dist/types/src/components/Transcription/Transcription.stories.d.ts.map +0 -1
- package/dist/types/src/components/Transcription/index.d.ts +0 -2
- package/dist/types/src/components/Transcription/index.d.ts.map +0 -1
- package/dist/types/src/components/Transcription/transcription-extension.d.ts +0 -15
- package/dist/types/src/components/Transcription/transcription-extension.d.ts.map +0 -1
- package/dist/types/src/enrichment/conversation.test.d.ts +0 -2
- package/dist/types/src/enrichment/conversation.test.d.ts.map +0 -1
- package/dist/types/src/enrichment/operations.d.ts +0 -200
- package/dist/types/src/enrichment/operations.d.ts.map +0 -1
- package/dist/types/src/enrichment/parser.d.ts +0 -26
- package/dist/types/src/enrichment/parser.d.ts.map +0 -1
- package/dist/types/src/enrichment/stream-simulator.d.ts +0 -38
- package/dist/types/src/enrichment/stream-simulator.d.ts.map +0 -1
- package/dist/types/src/hooks/useAudioFile.d.ts +0 -7
- package/dist/types/src/hooks/useAudioFile.d.ts.map +0 -1
- package/dist/types/src/hooks/useAudioTrack.d.ts +0 -5
- package/dist/types/src/hooks/useAudioTrack.d.ts.map +0 -1
- package/dist/types/src/hooks/useFeedModelAdapter.d.ts +0 -12
- package/dist/types/src/hooks/useFeedModelAdapter.d.ts.map +0 -1
- package/dist/types/src/hooks/useTranscriber.d.ts +0 -7
- package/dist/types/src/hooks/useTranscriber.d.ts.map +0 -1
- package/dist/types/src/hooks/useVoiceInput.d.ts +0 -11
- package/dist/types/src/hooks/useVoiceInput.d.ts.map +0 -1
- package/dist/types/src/model/index.d.ts +0 -2
- package/dist/types/src/model/index.d.ts.map +0 -1
- package/dist/types/src/model/model.d.ts +0 -68
- package/dist/types/src/model/model.d.ts.map +0 -1
- package/dist/types/src/model/model.test.d.ts +0 -2
- package/dist/types/src/model/model.test.d.ts.map +0 -1
- package/dist/types/src/stories/FileTranscription.stories.d.ts +0 -20
- package/dist/types/src/stories/FileTranscription.stories.d.ts.map +0 -1
- package/dist/types/src/stories/KeyWordRecognition.stories.d.ts +0 -14
- package/dist/types/src/stories/KeyWordRecognition.stories.d.ts.map +0 -1
- package/dist/types/src/stories/LiveTranscription.stories.d.ts +0 -20
- package/dist/types/src/stories/LiveTranscription.stories.d.ts.map +0 -1
- package/dist/types/src/stories/TranscriptionStory.d.ts +0 -21
- package/dist/types/src/stories/TranscriptionStory.d.ts.map +0 -1
- package/dist/types/src/stories/common.d.ts +0 -248
- package/dist/types/src/stories/common.d.ts.map +0 -1
- package/dist/types/src/transcriber/audio-recorder.d.ts +0 -47
- package/dist/types/src/transcriber/audio-recorder.d.ts.map +0 -1
- package/dist/types/src/transcriber/index.d.ts +0 -5
- package/dist/types/src/transcriber/index.d.ts.map +0 -1
- package/dist/types/src/transcriber/media-stream-recorder.d.ts +0 -30
- package/dist/types/src/transcriber/media-stream-recorder.d.ts.map +0 -1
- package/dist/types/src/transcriber/transcriber.browser.test.d.ts +0 -2
- package/dist/types/src/transcriber/transcriber.browser.test.d.ts.map +0 -1
- package/dist/types/src/transcriber/transcriber.d.ts +0 -105
- package/dist/types/src/transcriber/transcriber.d.ts.map +0 -1
- package/dist/types/src/transcriber/transcriber.test.d.ts +0 -2
- package/dist/types/src/transcriber/transcriber.test.d.ts.map +0 -1
- package/dist/types/src/transcriber/transcription-manager.d.ts.map +0 -1
- package/dist/types/src/util/array.d.ts +0 -2
- package/dist/types/src/util/array.d.ts.map +0 -1
- package/dist/types/src/util/monitor-audio-level.d.ts +0 -6
- package/dist/types/src/util/monitor-audio-level.d.ts.map +0 -1
- package/dist/types/src/util/render-byline.d.ts +0 -4
- package/dist/types/src/util/render-byline.d.ts.map +0 -1
- package/src/blueprints/index.ts +0 -5
- package/src/blueprints/transcription-blueprint.ts +0 -29
- package/src/capabilities/blueprint-definition.ts +0 -19
- package/src/components/Oracle/Oracle.stories.tsx +0 -147
- package/src/components/Oracle/Oracle.tsx +0 -142
- package/src/components/Oracle/index.ts +0 -5
- package/src/components/Transcription/Transcription.stories.tsx +0 -213
- package/src/components/Transcription/Transcription.tsx +0 -55
- package/src/components/Transcription/index.ts +0 -5
- package/src/components/Transcription/transcription-extension.ts +0 -203
- package/src/enrichment/conversation.test.ts +0 -162
- package/src/enrichment/conversation.txt +0 -23
- package/src/enrichment/operations.ts +0 -271
- package/src/enrichment/parser.ts +0 -101
- package/src/enrichment/stream-simulator.ts +0 -125
- package/src/hooks/useAudioFile.ts +0 -88
- package/src/hooks/useAudioTrack.ts +0 -35
- package/src/hooks/useFeedModelAdapter.ts +0 -46
- package/src/hooks/useTranscriber.ts +0 -47
- package/src/hooks/useVoiceInput.ts +0 -66
- package/src/model/index.ts +0 -5
- package/src/model/model.test.ts +0 -175
- package/src/model/model.ts +0 -229
- package/src/stories/FileTranscription.stories.tsx +0 -143
- package/src/stories/KeyWordRecognition.stories.tsx +0 -132
- package/src/stories/LiveTranscription.stories.tsx +0 -153
- package/src/stories/TranscriptionStory.tsx +0 -101
- package/src/stories/common.ts +0 -233
- package/src/transcriber/audio-recorder.ts +0 -56
- package/src/transcriber/index.ts +0 -8
- package/src/transcriber/media-stream-recorder.ts +0 -120
- package/src/transcriber/transcriber.browser.test.ts +0 -230
- package/src/transcriber/transcriber.test.ts +0 -104
- package/src/transcriber/transcriber.ts +0 -303
- package/src/util/array.ts +0 -14
- package/src/util/monitor-audio-level.ts +0 -58
- package/src/util/render-byline.ts +0 -33
- /package/dist/lib/neutral/{create-RVR7VC33.mjs.map → create-HNHGCKZ4.mjs.map} +0 -0
- /package/dist/lib/neutral/{blueprints → skills}/index.mjs.map +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// src/skills/transcription-skill.ts
|
|
2
|
+
import { Skill, Template } from "@dxos/compute";
|
|
3
|
+
import { trim } from "@dxos/util";
|
|
4
|
+
import { TranscriptOperation } from "#types";
|
|
5
|
+
var SKILL_KEY = "org.dxos.skill.transcription";
|
|
6
|
+
var make = () => Skill.make({
|
|
7
|
+
key: SKILL_KEY,
|
|
8
|
+
name: "Transcription",
|
|
9
|
+
tools: Skill.toolDefinitions({
|
|
10
|
+
operations: [
|
|
11
|
+
TranscriptOperation.Open,
|
|
12
|
+
TranscriptOperation.Summarize
|
|
13
|
+
]
|
|
14
|
+
}),
|
|
15
|
+
instructions: Template.make({
|
|
16
|
+
source: trim`
|
|
17
|
+
You can open and summarize a meeting transcript.
|
|
18
|
+
`
|
|
19
|
+
})
|
|
20
|
+
});
|
|
21
|
+
var skill = {
|
|
22
|
+
key: SKILL_KEY,
|
|
23
|
+
make
|
|
24
|
+
};
|
|
25
|
+
var transcription_skill_default = skill;
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
transcription_skill_default
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=chunk-KOXLGGSL.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/skills/transcription-skill.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Skill, Template } from '@dxos/compute';\nimport { trim } from '@dxos/util';\n\nimport { TranscriptOperation } from '#types';\n\nconst SKILL_KEY = 'org.dxos.skill.transcription';\n\nconst make = () =>\n Skill.make({\n key: SKILL_KEY,\n name: 'Transcription',\n tools: Skill.toolDefinitions({ operations: [TranscriptOperation.Open, TranscriptOperation.Summarize] }),\n instructions: Template.make({\n source: trim`\n You can open and summarize a meeting transcript.\n `,\n }),\n });\n\nconst skill: Skill.Definition = {\n key: SKILL_KEY,\n make,\n};\n\nexport default skill;\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,OAAOC,gBAAgB;AAChC,SAASC,YAAY;AAErB,SAASC,2BAA2B;AAEpC,IAAMC,YAAY;AAElB,IAAMC,OAAO,MACXL,MAAMK,KAAK;EACTC,KAAKF;EACLG,MAAM;EACNC,OAAOR,MAAMS,gBAAgB;IAAEC,YAAY;MAACP,oBAAoBQ;MAAMR,oBAAoBS;;EAAW,CAAA;EACrGC,cAAcZ,SAASI,KAAK;IAC1BS,QAAQZ;;;EAGV,CAAA;AACF,CAAA;AAEF,IAAMa,QAA0B;EAC9BT,KAAKF;EACLC;AACF;AAEA,IAAA,8BAAeU;",
|
|
6
|
+
"names": ["Skill", "Template", "trim", "TranscriptOperation", "SKILL_KEY", "make", "key", "name", "tools", "toolDefinitions", "operations", "Open", "Summarize", "instructions", "source", "skill"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__export
|
|
3
|
+
} from "./chunk-J5LGTIGS.mjs";
|
|
4
|
+
|
|
5
|
+
// src/types/Settings.ts
|
|
6
|
+
var Settings_exports = {};
|
|
7
|
+
__export(Settings_exports, {
|
|
8
|
+
Settings: () => Settings
|
|
9
|
+
});
|
|
10
|
+
import * as Schema from "effect/Schema";
|
|
11
|
+
var Settings = Schema.mutable(Schema.Struct({
|
|
12
|
+
entityExtraction: Schema.optional(Schema.Boolean.annotations({
|
|
13
|
+
title: "Entity extraction",
|
|
14
|
+
description: "While transcribing, use the Assistant to detect and annotate mentions of known objects such as people or organizations."
|
|
15
|
+
})).pipe(Schema.withConstructorDefault(() => true)),
|
|
16
|
+
recordMode: Schema.optional(Schema.Literal("toggle", "hold").annotations({
|
|
17
|
+
title: "Record mode",
|
|
18
|
+
description: "Whether the mic toggles recording on each click, or records only while the control is held (push-to-talk)."
|
|
19
|
+
})).pipe(Schema.withConstructorDefault(() => "toggle")),
|
|
20
|
+
audioDeviceId: Schema.optional(Schema.String.annotations({
|
|
21
|
+
title: "Audio input device",
|
|
22
|
+
description: "Identifier of the microphone to capture from; empty uses the system default."
|
|
23
|
+
})),
|
|
24
|
+
transcribeAfterMs: Schema.optional(Schema.Number.annotations({
|
|
25
|
+
title: "Initial buffering (ms)",
|
|
26
|
+
description: "How long to accumulate audio before producing the first transcription."
|
|
27
|
+
})).pipe(Schema.withConstructorDefault(() => 4e3)),
|
|
28
|
+
streamMode: Schema.optional(Schema.Literal("batch", "word").annotations({
|
|
29
|
+
title: "Reveal mode",
|
|
30
|
+
description: "Whether transcribed text appears in batches or streams word-by-word."
|
|
31
|
+
})).pipe(Schema.withConstructorDefault(() => "word")),
|
|
32
|
+
wordIntervalMs: Schema.optional(Schema.Number.annotations({
|
|
33
|
+
title: "Word interval (ms)",
|
|
34
|
+
description: "Pacing between words when streaming word-by-word."
|
|
35
|
+
})).pipe(Schema.withConstructorDefault(() => 80))
|
|
36
|
+
}));
|
|
37
|
+
|
|
38
|
+
// src/types/TranscriptionCapabilities.ts
|
|
39
|
+
var TranscriptionCapabilities_exports = {};
|
|
40
|
+
__export(TranscriptionCapabilities_exports, {
|
|
41
|
+
EntityLookup: () => EntityLookup,
|
|
42
|
+
PipelineStatus: () => PipelineStatus,
|
|
43
|
+
RecordingSession: () => RecordingSession,
|
|
44
|
+
Settings: () => Settings2,
|
|
45
|
+
TranscriptionManagerProvider: () => TranscriptionManagerProvider
|
|
46
|
+
});
|
|
47
|
+
import { Capability } from "@dxos/app-framework";
|
|
48
|
+
import { meta } from "#meta";
|
|
49
|
+
var TranscriptionManagerProvider = Capability.make(`${meta.profile.key}.capability.transcription-manager`);
|
|
50
|
+
var Settings2 = Capability.make(`${meta.profile.key}.capability.settings`);
|
|
51
|
+
var RecordingSession = Capability.make(`${meta.profile.key}.capability.recording-session`);
|
|
52
|
+
var EntityLookup = Capability.make(`${meta.profile.key}.capability.entity-lookup`);
|
|
53
|
+
var PipelineStatus = Capability.make(`${meta.profile.key}.capability.pipeline-status`);
|
|
54
|
+
|
|
55
|
+
// src/types/TranscriptOperation.ts
|
|
56
|
+
var TranscriptOperation_exports = {};
|
|
57
|
+
__export(TranscriptOperation_exports, {
|
|
58
|
+
Create: () => Create,
|
|
59
|
+
EnrichMessage: () => EnrichMessage,
|
|
60
|
+
MessageWithRangeId: () => MessageWithRangeId,
|
|
61
|
+
Open: () => Open,
|
|
62
|
+
SentenceNormalization: () => SentenceNormalization,
|
|
63
|
+
SentenceNormalizationInput: () => SentenceNormalizationInput,
|
|
64
|
+
SentenceNormalizationOutput: () => SentenceNormalizationOutput,
|
|
65
|
+
Summarize: () => Summarize
|
|
66
|
+
});
|
|
67
|
+
import * as Schema2 from "effect/Schema";
|
|
68
|
+
import { AiService } from "@dxos/ai";
|
|
69
|
+
import { SpaceSchema } from "@dxos/client/echo";
|
|
70
|
+
import { Operation } from "@dxos/compute";
|
|
71
|
+
import { Database, DXN, Ref, Type } from "@dxos/echo";
|
|
72
|
+
import { Message, Transcript } from "@dxos/types";
|
|
73
|
+
import { meta as meta2 } from "#meta";
|
|
74
|
+
var makeKey = (name) => DXN.make(`${meta2.profile.key}.operation.${name}`);
|
|
75
|
+
var Create = Operation.make({
|
|
76
|
+
meta: {
|
|
77
|
+
key: makeKey("create"),
|
|
78
|
+
name: "Create Transcript",
|
|
79
|
+
icon: "ph--microphone--regular"
|
|
80
|
+
},
|
|
81
|
+
input: Schema2.Struct({
|
|
82
|
+
name: Schema2.optional(Schema2.String),
|
|
83
|
+
space: SpaceSchema
|
|
84
|
+
}),
|
|
85
|
+
output: Schema2.Struct({
|
|
86
|
+
object: Type.getSchema(Transcript.Transcript)
|
|
87
|
+
})
|
|
88
|
+
});
|
|
89
|
+
var MessageWithRangeId = Schema2.extend(Type.getSchema(Message.Message), Schema2.Struct({
|
|
90
|
+
rangeId: Schema2.optional(Schema2.Array(Schema2.String)).annotations({
|
|
91
|
+
description: "The IDs of the messages that contain the sentences."
|
|
92
|
+
})
|
|
93
|
+
}));
|
|
94
|
+
var Open = Operation.make({
|
|
95
|
+
meta: {
|
|
96
|
+
key: DXN.make("org.dxos.function.transcription.open"),
|
|
97
|
+
name: "Open",
|
|
98
|
+
description: "Opens and reads the contents of a transcription object.",
|
|
99
|
+
icon: "ph--folder-open--regular"
|
|
100
|
+
},
|
|
101
|
+
input: Schema2.Struct({
|
|
102
|
+
transcript: Ref.Ref(Transcript.Transcript).annotations({
|
|
103
|
+
description: "The ID of the transcription object."
|
|
104
|
+
})
|
|
105
|
+
}),
|
|
106
|
+
output: Schema2.Struct({
|
|
107
|
+
content: Schema2.String
|
|
108
|
+
}),
|
|
109
|
+
services: [
|
|
110
|
+
Database.Service
|
|
111
|
+
]
|
|
112
|
+
});
|
|
113
|
+
var Summarize = Operation.make({
|
|
114
|
+
meta: {
|
|
115
|
+
key: DXN.make("org.dxos.function.transcription.summarize"),
|
|
116
|
+
name: "Summarize",
|
|
117
|
+
description: "Summarize a transcript of a meeting.",
|
|
118
|
+
icon: "ph--text-align-left--regular"
|
|
119
|
+
},
|
|
120
|
+
input: Schema2.Struct({
|
|
121
|
+
transcript: Schema2.String.annotations({
|
|
122
|
+
description: "The transcript of the meeting."
|
|
123
|
+
}),
|
|
124
|
+
notes: Schema2.optional(Schema2.String).annotations({
|
|
125
|
+
description: "Additional notes from the participants."
|
|
126
|
+
})
|
|
127
|
+
}),
|
|
128
|
+
output: Schema2.Struct({
|
|
129
|
+
summary: Schema2.String.annotations({
|
|
130
|
+
description: "The summary of the transcript."
|
|
131
|
+
})
|
|
132
|
+
}),
|
|
133
|
+
services: [
|
|
134
|
+
AiService.AiService
|
|
135
|
+
]
|
|
136
|
+
}).pipe(Operation.visible);
|
|
137
|
+
var EnrichMessage = Operation.make({
|
|
138
|
+
meta: {
|
|
139
|
+
key: DXN.make("org.dxos.function.transcription.enrichMessage"),
|
|
140
|
+
name: "Enrich Transcript Message",
|
|
141
|
+
description: "Extract proper nouns from a transcript message and link them to objects in the space.",
|
|
142
|
+
icon: "ph--text-t--regular"
|
|
143
|
+
},
|
|
144
|
+
input: Schema2.Struct({
|
|
145
|
+
message: Type.getSchema(Message.Message)
|
|
146
|
+
}),
|
|
147
|
+
output: Schema2.Struct({
|
|
148
|
+
message: Type.getSchema(Message.Message)
|
|
149
|
+
}),
|
|
150
|
+
services: [
|
|
151
|
+
AiService.AiService,
|
|
152
|
+
Database.Service
|
|
153
|
+
]
|
|
154
|
+
});
|
|
155
|
+
var SentenceNormalizationInput = Schema2.Struct({
|
|
156
|
+
messages: Schema2.Array(MessageWithRangeId).annotations({
|
|
157
|
+
description: "Messages to normalize into sentences."
|
|
158
|
+
})
|
|
159
|
+
});
|
|
160
|
+
var SentenceNormalizationOutput = Schema2.Struct({
|
|
161
|
+
sentences: Schema2.Array(MessageWithRangeId.pipe(Schema2.mutable)).pipe(Schema2.mutable).annotations({
|
|
162
|
+
description: "The sentences of the transcript."
|
|
163
|
+
})
|
|
164
|
+
});
|
|
165
|
+
var SentenceNormalization = Operation.make({
|
|
166
|
+
meta: {
|
|
167
|
+
key: DXN.make("org.dxos.function.transcription.sentenceNormalization"),
|
|
168
|
+
name: "Sentence Normalization",
|
|
169
|
+
description: "Post process of transcription for sentence normalization",
|
|
170
|
+
icon: "ph--text-t--regular"
|
|
171
|
+
},
|
|
172
|
+
input: SentenceNormalizationInput,
|
|
173
|
+
output: SentenceNormalizationOutput,
|
|
174
|
+
services: []
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
export {
|
|
178
|
+
Settings_exports,
|
|
179
|
+
TranscriptionCapabilities_exports,
|
|
180
|
+
TranscriptOperation_exports
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=chunk-MDV7NBFJ.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types/Settings.ts", "../../../src/types/TranscriptionCapabilities.ts", "../../../src/types/TranscriptOperation.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nexport type RecordMode = 'toggle' | 'hold';\n\nexport const Settings = Schema.mutable(\n Schema.Struct({\n entityExtraction: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Entity extraction',\n description:\n 'While transcribing, use the Assistant to detect and annotate mentions of known objects such as people or organizations.',\n }),\n ).pipe(Schema.withConstructorDefault(() => true)),\n\n recordMode: Schema.optional(\n Schema.Literal('toggle', 'hold').annotations({\n title: 'Record mode',\n description:\n 'Whether the mic toggles recording on each click, or records only while the control is held (push-to-talk).',\n }),\n ).pipe(Schema.withConstructorDefault(() => 'toggle' as const)),\n\n audioDeviceId: Schema.optional(\n Schema.String.annotations({\n title: 'Audio input device',\n description: 'Identifier of the microphone to capture from; empty uses the system default.',\n }),\n ),\n\n transcribeAfterMs: Schema.optional(\n Schema.Number.annotations({\n title: 'Initial buffering (ms)',\n description: 'How long to accumulate audio before producing the first transcription.',\n }),\n ).pipe(Schema.withConstructorDefault(() => 4000)),\n\n streamMode: Schema.optional(\n Schema.Literal('batch', 'word').annotations({\n title: 'Reveal mode',\n description: 'Whether transcribed text appears in batches or streams word-by-word.',\n }),\n ).pipe(Schema.withConstructorDefault(() => 'word' as const)),\n\n wordIntervalMs: Schema.optional(\n Schema.Number.annotations({\n title: 'Word interval (ms)',\n description: 'Pacing between words when streaming word-by-word.',\n }),\n ).pipe(Schema.withConstructorDefault(() => 80)),\n }),\n);\n\nexport interface Settings extends Schema.Schema.Type<typeof Settings> {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { type Atom } from '@effect-atom/atom-react';\n\nimport { Capability } from '@dxos/app-framework';\nimport { type Space } from '@dxos/client/echo';\nimport { type Feed } from '@dxos/echo';\nimport { type EntityLookup as EntityLookupFn } from '@dxos/transcription-pipeline';\nimport { type Message } from '@dxos/types';\n\nimport { meta } from '#meta';\n\nimport * as SettingsModule from './Settings';\n\n/**\n * Enriches a transcript message before it is written to the feed (e.g. entity linking).\n */\nexport type TranscriptMessageEnricher = (message: Message.Message) => Promise<Message.Message>;\n\n/**\n * Service contract for the meeting transcription manager. Consumers (e.g. plugin-meeting) depend on\n * this interface via the {@link TranscriptionManagerProvider} capability, not on the concrete\n * implementation, keeping the manager's browser/SDK dependencies out of consumer packages.\n */\nexport interface TranscriptionManager {\n readonly enabled: Atom.Atom<boolean>;\n setFeed(space: Space, feed: Feed.Feed): void;\n setAudioTrack(track?: MediaStreamTrack): Promise<void>;\n setRecording(recording?: boolean): void;\n setEnabled(enabled: boolean): Promise<void>;\n open(): Promise<this>;\n close(): Promise<this>;\n}\n\nexport type TranscriptionManagerProviderProps = {\n messageEnricher?: TranscriptMessageEnricher;\n};\n\nexport type TranscriptionManagerProvider = (props: TranscriptionManagerProviderProps) => TranscriptionManager;\n\nexport const TranscriptionManagerProvider = Capability.make<TranscriptionManagerProvider>(\n `${meta.profile.key}.capability.transcription-manager`,\n);\n\nexport const Settings = Capability.make<Atom.Writable<SettingsModule.Settings>>(\n `${meta.profile.key}.capability.settings`,\n);\n\n/**\n * The single active editor transcription session. `id` is the editor's attendable id (the key it\n * registered under in `MarkdownCapabilities.EditorViews`); `recording` gates audio capture. `null`\n * when no session is active.\n */\nexport type RecordingSession = { id: string; recording: boolean };\n\nexport const RecordingSession = Capability.make<Atom.Writable<RecordingSession | null>>(\n `${meta.profile.key}.capability.recording-session`,\n);\n\n/**\n * Resolves entity references for live-transcription enrichment. Backend-agnostic (full-text, vector,\n * a remote service, …) so the headless driver depends on the function, not the database.\n */\nexport type EntityLookup = EntityLookupFn;\n\nexport const EntityLookup = Capability.make<EntityLookupFn>(`${meta.profile.key}.capability.entity-lookup`);\n\n/**\n * Live transcription lifecycle, published by the driver for observers (toolbar spinner, testbench):\n * `recording` (mic capturing) → `draining` (mic off, finishing the pipeline) → `idle`.\n */\nexport type PipelinePhase = 'idle' | 'recording' | 'draining';\n\nexport const PipelineStatus = Capability.make<Atom.Writable<{ phase: PipelinePhase }>>(\n `${meta.profile.key}.capability.pipeline-status`,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { AiService } from '@dxos/ai';\nimport { SpaceSchema } from '@dxos/client/echo';\nimport { Operation } from '@dxos/compute';\nimport { Database, DXN, Ref, Type } from '@dxos/echo';\n// Message and Person are used via Type.getSchema(Message.Message); they also appear in emitted .d.ts.\n// eslint-disable-next-line unused-imports/no-unused-imports\nimport { Message, type Person, Transcript } from '@dxos/types';\n\nimport { meta } from '#meta';\n\nconst makeKey = (name: string) => DXN.make(`${meta.profile.key}.operation.${name}`);\n\nexport const Create = Operation.make({\n meta: { key: makeKey('create'), name: 'Create Transcript', icon: 'ph--microphone--regular' },\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n space: SpaceSchema,\n }),\n output: Schema.Struct({\n object: Type.getSchema(Transcript.Transcript),\n }),\n});\n\nexport const MessageWithRangeId = Schema.extend(\n Type.getSchema(Message.Message),\n Schema.Struct({\n rangeId: Schema.optional(Schema.Array(Schema.String)).annotations({\n description: 'The IDs of the messages that contain the sentences.',\n }),\n }),\n);\n\nexport type MessageWithRangeIdType = Schema.Schema.Type<typeof MessageWithRangeId>;\n\nexport const Open = Operation.make({\n meta: {\n key: DXN.make('org.dxos.function.transcription.open'),\n name: 'Open',\n description: 'Opens and reads the contents of a transcription object.',\n icon: 'ph--folder-open--regular',\n },\n input: Schema.Struct({\n transcript: Ref.Ref(Transcript.Transcript).annotations({\n description: 'The ID of the transcription object.',\n }),\n }),\n output: Schema.Struct({\n content: Schema.String,\n }),\n services: [Database.Service],\n});\n\nexport const Summarize = Operation.make({\n meta: {\n key: DXN.make('org.dxos.function.transcription.summarize'),\n name: 'Summarize',\n description: 'Summarize a transcript of a meeting.',\n icon: 'ph--text-align-left--regular',\n },\n input: Schema.Struct({\n transcript: Schema.String.annotations({\n description: 'The transcript of the meeting.',\n }),\n notes: Schema.optional(Schema.String).annotations({\n description: 'Additional notes from the participants.',\n }),\n }),\n output: Schema.Struct({\n summary: Schema.String.annotations({\n description: 'The summary of the transcript.',\n }),\n }),\n services: [AiService.AiService],\n}).pipe(Operation.visible);\n\nexport const EnrichMessage = Operation.make({\n meta: {\n key: DXN.make('org.dxos.function.transcription.enrichMessage'),\n name: 'Enrich Transcript Message',\n description: 'Extract proper nouns from a transcript message and link them to objects in the space.',\n icon: 'ph--text-t--regular',\n },\n input: Schema.Struct({\n message: Type.getSchema(Message.Message),\n }),\n output: Schema.Struct({\n message: Type.getSchema(Message.Message),\n }),\n services: [AiService.AiService, Database.Service],\n});\n\nexport const SentenceNormalizationInput = Schema.Struct({\n messages: Schema.Array(MessageWithRangeId).annotations({\n description: 'Messages to normalize into sentences.',\n }),\n});\n\nexport type SentenceNormalizationInputType = Schema.Schema.Type<typeof SentenceNormalizationInput>;\n\nexport const SentenceNormalizationOutput = Schema.Struct({\n sentences: Schema.Array(MessageWithRangeId.pipe(Schema.mutable)).pipe(Schema.mutable).annotations({\n description: 'The sentences of the transcript.',\n }),\n});\n\nexport const SentenceNormalization = Operation.make({\n meta: {\n key: DXN.make('org.dxos.function.transcription.sentenceNormalization'),\n name: 'Sentence Normalization',\n description: 'Post process of transcription for sentence normalization',\n icon: 'ph--text-t--regular',\n },\n input: SentenceNormalizationInput,\n output: SentenceNormalizationOutput,\n services: [],\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Schema", "Settings", "mutable", "Struct", "entityExtraction", "optional", "Boolean", "annotations", "title", "description", "pipe", "withConstructorDefault", "recordMode", "Literal", "audioDeviceId", "String", "transcribeAfterMs", "Number", "streamMode", "wordIntervalMs", "Settings", "Capability", "meta", "TranscriptionManagerProvider", "make", "profile", "key", "RecordingSession", "EntityLookup", "PipelineStatus", "Schema", "AiService", "SpaceSchema", "Operation", "Database", "DXN", "Ref", "Type", "Message", "Transcript", "meta", "makeKey", "name", "make", "profile", "key", "Create", "icon", "input", "Struct", "optional", "String", "space", "output", "object", "getSchema", "MessageWithRangeId", "extend", "rangeId", "Array", "annotations", "description", "Open", "transcript", "content", "services", "Service", "Summarize", "notes", "summary", "pipe", "visible", "EnrichMessage", "message", "SentenceNormalizationInput", "messages", "SentenceNormalizationOutput", "sentences", "mutable", "SentenceNormalization"]
|
|
7
|
+
}
|
|
@@ -1,269 +1,125 @@
|
|
|
1
|
-
import {
|
|
2
|
-
DocumentAdapter
|
|
3
|
-
} from "../chunk-MLRJWAQH.mjs";
|
|
4
1
|
import "../chunk-J5LGTIGS.mjs";
|
|
5
2
|
|
|
6
|
-
// src/components/
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import "@dxos/react-ui-
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
3
|
+
// src/components/Mic/Mic.tsx
|
|
4
|
+
import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
5
|
+
import { useAtomCapabilityState } from "@dxos/app-framework/ui";
|
|
6
|
+
import { MicButton, useTranslation } from "@dxos/react-ui";
|
|
7
|
+
import { useSoundEffect } from "@dxos/react-ui-audio";
|
|
8
|
+
import { MicSettings } from "@dxos/react-ui-transcription";
|
|
9
|
+
import { meta } from "#meta";
|
|
10
|
+
import { TranscriptionCapabilities } from "#types";
|
|
11
|
+
var Mic = ({ docId }) => {
|
|
12
|
+
const { t } = useTranslation(meta.profile.key);
|
|
13
|
+
const [session, setSession] = useAtomCapabilityState(TranscriptionCapabilities.RecordingSession);
|
|
14
|
+
const [settings, setSettings] = useAtomCapabilityState(TranscriptionCapabilities.Settings);
|
|
15
|
+
const recording = !!session?.recording && session.id === docId;
|
|
16
|
+
const soundStart = useSoundEffect("StartRecording");
|
|
17
|
+
const soundStop = useSoundEffect("StopRecording");
|
|
18
|
+
const wasRecording = useRef(recording);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (wasRecording.current === recording) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
wasRecording.current = recording;
|
|
24
|
+
void (recording ? soundStart : soundStop).play();
|
|
25
|
+
}, [
|
|
26
|
+
recording,
|
|
27
|
+
soundStart,
|
|
28
|
+
soundStop
|
|
30
29
|
]);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
Content.displayName = "Oracle.Content";
|
|
45
|
-
var Canvas = ({ classNames, children }) => /* @__PURE__ */ React.createElement(SVG.Root, {
|
|
46
|
-
centered: true,
|
|
47
|
-
classNames: mx("absolute inset-0", classNames)
|
|
48
|
-
}, children ?? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(SVG.Markers, null), /* @__PURE__ */ React.createElement(SVG.Grid, null), /* @__PURE__ */ React.createElement(SVG.Zoom, {
|
|
49
|
-
extent: [
|
|
50
|
-
1 / 4,
|
|
51
|
-
4
|
|
52
|
-
]
|
|
53
|
-
}, /* @__PURE__ */ React.createElement(SVG.Graph, null))));
|
|
54
|
-
var Text = ({ classNames }) => {
|
|
55
|
-
const { text, delay } = useOracleContext("Text");
|
|
56
|
-
return /* @__PURE__ */ React.createElement("div", {
|
|
57
|
-
className: "pointer-events-none absolute inset-0 flex items-center justify-center"
|
|
58
|
-
}, /* @__PURE__ */ React.createElement(TextBlock, {
|
|
59
|
-
classNames: mx("max-w-xl px-6 py-4 text-center text-2xl font-medium text-balance text-subdued", classNames),
|
|
60
|
-
text,
|
|
61
|
-
delay
|
|
62
|
-
}));
|
|
63
|
-
};
|
|
64
|
-
var Oracle = {
|
|
65
|
-
Root,
|
|
66
|
-
Content,
|
|
67
|
-
Canvas,
|
|
68
|
-
Text
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
// src/components/Transcription/Transcription.tsx
|
|
72
|
-
import React2 from "react";
|
|
73
|
-
import { useThemeContext } from "@dxos/react-ui";
|
|
74
|
-
import { composable, composableProps as composableProps2 } from "@dxos/react-ui";
|
|
75
|
-
import { useTextEditor } from "@dxos/react-ui-editor";
|
|
76
|
-
import { createBasicExtensions, createMarkdownExtensions, createThemeExtensions, decorateMarkdown, documentSlots, preview, scroller } from "@dxos/ui-editor";
|
|
77
|
-
|
|
78
|
-
// src/components/Transcription/transcription-extension.ts
|
|
79
|
-
import { RangeSetBuilder } from "@codemirror/state";
|
|
80
|
-
import { EditorView, GutterMarker, ViewPlugin, gutter } from "@codemirror/view";
|
|
81
|
-
import { format } from "date-fns/format";
|
|
82
|
-
import { intervalToDuration } from "date-fns/intervalToDuration";
|
|
83
|
-
import { addEventListener, combine } from "@dxos/async";
|
|
84
|
-
var transcription = ({ model, started }) => {
|
|
85
|
-
return [
|
|
86
|
-
// Show timestamps in the gutter.
|
|
87
|
-
gutter({
|
|
88
|
-
class: "cm-timestamp-gutter",
|
|
89
|
-
lineMarkerChange: (update) => update.docChanged || update.viewportChanged,
|
|
90
|
-
markers: (view) => {
|
|
91
|
-
const start = getStartTime(started, model.chunks[0]);
|
|
92
|
-
const builder = new RangeSetBuilder();
|
|
93
|
-
for (const { from, to } of view.visibleRanges) {
|
|
94
|
-
let line = view.state.doc.lineAt(from);
|
|
95
|
-
while (line.from <= to) {
|
|
96
|
-
const block = model.getChunkAtLine(line.number)?.blocks[0];
|
|
97
|
-
const timestamp = block?._tag === "transcript" && block.started;
|
|
98
|
-
if (timestamp) {
|
|
99
|
-
builder.add(line.from, line.from, new TimestampMarker(line.number, new Date(timestamp), start));
|
|
100
|
-
}
|
|
101
|
-
if (line.to + 1 > view.state.doc.length) {
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
line = view.state.doc.lineAt(line.to + 1);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return builder.finish();
|
|
108
|
-
}
|
|
109
|
-
}),
|
|
110
|
-
// Listen for model updates.
|
|
111
|
-
ViewPlugin.fromClass(class {
|
|
112
|
-
_controls;
|
|
113
|
-
_cleanup;
|
|
114
|
-
_adapter;
|
|
115
|
-
_initialized = false;
|
|
116
|
-
constructor(view) {
|
|
117
|
-
this._adapter = new DocumentAdapter(view);
|
|
118
|
-
const scroller2 = view.scrollDOM;
|
|
119
|
-
let isAutoScrolling = false;
|
|
120
|
-
let hasScrolled = false;
|
|
121
|
-
let timeout;
|
|
122
|
-
const scrollToBottom = (smooth = false) => {
|
|
123
|
-
scroller2.style.scrollBehavior = smooth ? "smooth" : "";
|
|
124
|
-
scroller2.classList.add("cm-hide-scrollbar");
|
|
125
|
-
isAutoScrolling = true;
|
|
126
|
-
clearTimeout(timeout);
|
|
127
|
-
timeout = setTimeout(() => {
|
|
128
|
-
this._controls?.classList.add("opacity-0");
|
|
129
|
-
scroller2.classList.remove("cm-hide-scrollbar");
|
|
130
|
-
isAutoScrolling = false;
|
|
131
|
-
}, 500);
|
|
132
|
-
view.dispatch({
|
|
133
|
-
effects: EditorView.scrollIntoView(view.state.doc.length, {
|
|
134
|
-
y: "end"
|
|
135
|
-
})
|
|
136
|
-
});
|
|
137
|
-
};
|
|
138
|
-
this._cleanup = combine(addEventListener(view.scrollDOM, "scroll", () => {
|
|
139
|
-
if (!isAutoScrolling) {
|
|
140
|
-
hasScrolled = true;
|
|
141
|
-
this._controls?.classList.remove("opacity-0");
|
|
142
|
-
}
|
|
143
|
-
}), model.update.on(() => {
|
|
144
|
-
const autoScroll = scroller2.scrollHeight - scroller2.scrollTop - scroller2.clientHeight === 0 || !hasScrolled;
|
|
145
|
-
model.sync(this._adapter);
|
|
146
|
-
if (autoScroll) {
|
|
147
|
-
scrollToBottom(true);
|
|
148
|
-
}
|
|
149
|
-
}));
|
|
150
|
-
}
|
|
151
|
-
update(_update) {
|
|
152
|
-
if (!this._initialized) {
|
|
153
|
-
this._initialized = true;
|
|
154
|
-
setTimeout(() => {
|
|
155
|
-
model.sync(this._adapter);
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
destroy() {
|
|
160
|
-
this._controls?.remove();
|
|
161
|
-
this._cleanup();
|
|
30
|
+
const recordMode = settings?.recordMode ?? "toggle";
|
|
31
|
+
const entityExtraction = settings?.entityExtraction !== false;
|
|
32
|
+
const selectedDeviceId = settings?.audioDeviceId ?? "";
|
|
33
|
+
const [devices, setDevices] = useState([]);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (!navigator.mediaDevices?.enumerateDevices) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
let cancelled = false;
|
|
39
|
+
const refresh = async () => {
|
|
40
|
+
const all = await navigator.mediaDevices.enumerateDevices();
|
|
41
|
+
if (cancelled) {
|
|
42
|
+
return;
|
|
162
43
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
},
|
|
168
|
-
".cm-timestamp-gutter": {
|
|
169
|
-
width: "6rem",
|
|
170
|
-
paddingLeft: "0.5rem",
|
|
171
|
-
paddingRight: "1rem"
|
|
172
|
-
},
|
|
173
|
-
".cm-timestamp-gutter > .cm-gutterElement > div": {
|
|
174
|
-
display: "inline-flex",
|
|
175
|
-
textAlign: "right",
|
|
176
|
-
padding: "3px"
|
|
177
|
-
}
|
|
178
|
-
})
|
|
179
|
-
];
|
|
180
|
-
};
|
|
181
|
-
var TimestampMarker = class extends GutterMarker {
|
|
182
|
-
_line;
|
|
183
|
-
_timestamp;
|
|
184
|
-
_started;
|
|
185
|
-
constructor(_line, _timestamp, _started) {
|
|
186
|
-
super(), this._line = _line, this._timestamp = _timestamp, this._started = _started;
|
|
187
|
-
}
|
|
188
|
-
eq(other) {
|
|
189
|
-
return this._timestamp === other._timestamp;
|
|
190
|
-
}
|
|
191
|
-
toDOM(view) {
|
|
192
|
-
const el = document.createElement("div");
|
|
193
|
-
el.className = "text-sm text-subdued hover:bg-hover-surface cursor-pointer";
|
|
194
|
-
el.textContent = formatTimestamp(this._timestamp, this._started);
|
|
195
|
-
el.onclick = () => {
|
|
196
|
-
const pos = view.state.doc.line(this._line).from;
|
|
197
|
-
view.dispatch({
|
|
198
|
-
effects: EditorView.scrollIntoView(pos, {
|
|
199
|
-
y: "start"
|
|
200
|
-
})
|
|
201
|
-
});
|
|
44
|
+
setDevices(all.filter((device) => device.kind === "audioinput" && device.deviceId).map((device, index) => ({
|
|
45
|
+
deviceId: device.deviceId,
|
|
46
|
+
label: device.label || `Microphone ${index + 1}`
|
|
47
|
+
})));
|
|
202
48
|
};
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
return started;
|
|
209
|
-
}
|
|
210
|
-
if (message?.blocks[0]?._tag === "transcript" && message.blocks[0].started) {
|
|
211
|
-
return new Date(message.blocks[0].started);
|
|
212
|
-
}
|
|
213
|
-
return void 0;
|
|
214
|
-
};
|
|
215
|
-
var formatTimestamp = (timestamp, relative) => {
|
|
216
|
-
if (relative) {
|
|
217
|
-
const pad = (n = 0) => String(n).padStart(2, "0");
|
|
218
|
-
const { hours, minutes, seconds } = intervalToDuration({
|
|
219
|
-
start: relative,
|
|
220
|
-
end: timestamp
|
|
221
|
-
});
|
|
222
|
-
return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;
|
|
223
|
-
} else {
|
|
224
|
-
return format(timestamp, "HH:mm:ss");
|
|
225
|
-
}
|
|
226
|
-
};
|
|
227
|
-
|
|
228
|
-
// src/components/Transcription/Transcription.tsx
|
|
229
|
-
var Transcription = composable(({ transcript: object, model, children, ...props }, forwardedRef) => {
|
|
230
|
-
const { themeMode } = useThemeContext();
|
|
231
|
-
const { parentRef } = useTextEditor(() => {
|
|
232
|
-
return {
|
|
233
|
-
extensions: [
|
|
234
|
-
createBasicExtensions({
|
|
235
|
-
readOnly: true,
|
|
236
|
-
lineWrapping: true,
|
|
237
|
-
search: true
|
|
238
|
-
}),
|
|
239
|
-
createThemeExtensions({
|
|
240
|
-
themeMode,
|
|
241
|
-
slots: documentSlots
|
|
242
|
-
}),
|
|
243
|
-
createMarkdownExtensions(),
|
|
244
|
-
decorateMarkdown(),
|
|
245
|
-
preview(),
|
|
246
|
-
transcription({
|
|
247
|
-
model,
|
|
248
|
-
started: object?.started ? new Date(object.started) : void 0
|
|
249
|
-
}),
|
|
250
|
-
scroller()
|
|
251
|
-
]
|
|
49
|
+
void refresh();
|
|
50
|
+
navigator.mediaDevices.addEventListener("devicechange", refresh);
|
|
51
|
+
return () => {
|
|
52
|
+
cancelled = true;
|
|
53
|
+
navigator.mediaDevices.removeEventListener("devicechange", refresh);
|
|
252
54
|
};
|
|
55
|
+
}, []);
|
|
56
|
+
const handleToggle = useCallback(() => {
|
|
57
|
+
setSession((current) => current?.recording && current.id === docId ? null : {
|
|
58
|
+
id: docId,
|
|
59
|
+
recording: true
|
|
60
|
+
});
|
|
61
|
+
}, [
|
|
62
|
+
setSession,
|
|
63
|
+
docId
|
|
64
|
+
]);
|
|
65
|
+
const handlePressStart = useCallback(() => {
|
|
66
|
+
setSession(() => ({
|
|
67
|
+
id: docId,
|
|
68
|
+
recording: true
|
|
69
|
+
}));
|
|
253
70
|
}, [
|
|
254
|
-
|
|
255
|
-
|
|
71
|
+
setSession,
|
|
72
|
+
docId
|
|
256
73
|
]);
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
74
|
+
const handlePressEnd = useCallback(() => {
|
|
75
|
+
setSession((current) => current?.id === docId ? null : current);
|
|
76
|
+
}, [
|
|
77
|
+
setSession,
|
|
78
|
+
docId
|
|
79
|
+
]);
|
|
80
|
+
const handleRecordModeChange = useCallback((mode) => setSettings((current) => ({
|
|
81
|
+
...current,
|
|
82
|
+
recordMode: mode
|
|
83
|
+
})), [
|
|
84
|
+
setSettings
|
|
85
|
+
]);
|
|
86
|
+
const handleEntityExtractionChange = useCallback((value) => setSettings((current) => ({
|
|
87
|
+
...current,
|
|
88
|
+
entityExtraction: value
|
|
89
|
+
})), [
|
|
90
|
+
setSettings
|
|
91
|
+
]);
|
|
92
|
+
const handleSelectDevice = useCallback((deviceId) => setSettings((current) => ({
|
|
93
|
+
...current,
|
|
94
|
+
audioDeviceId: deviceId || void 0
|
|
95
|
+
})), [
|
|
96
|
+
setSettings
|
|
97
|
+
]);
|
|
98
|
+
const recordLabel = recording ? t("stop-recording.label") : recordMode === "hold" ? t("hold-to-record.label") : t("start-recording.label");
|
|
99
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
100
|
+
className: "flex items-center"
|
|
101
|
+
}, /* @__PURE__ */ React.createElement(MicButton, {
|
|
102
|
+
iconOnly: true,
|
|
103
|
+
variant: "ghost",
|
|
104
|
+
label: recordLabel,
|
|
105
|
+
recording,
|
|
106
|
+
mode: recordMode,
|
|
107
|
+
onToggle: handleToggle,
|
|
108
|
+
onPressStart: handlePressStart,
|
|
109
|
+
onPressEnd: handlePressEnd,
|
|
110
|
+
"data-testid": "transcription.record"
|
|
111
|
+
}), /* @__PURE__ */ React.createElement(MicSettings, {
|
|
112
|
+
translationNs: meta.profile.key,
|
|
113
|
+
recordMode,
|
|
114
|
+
entityExtraction,
|
|
115
|
+
devices,
|
|
116
|
+
selectedDeviceId,
|
|
117
|
+
onRecordModeChange: handleRecordModeChange,
|
|
118
|
+
onEntityExtractionChange: handleEntityExtractionChange,
|
|
119
|
+
onSelectDevice: handleSelectDevice
|
|
120
|
+
}));
|
|
121
|
+
};
|
|
265
122
|
export {
|
|
266
|
-
|
|
267
|
-
Transcription
|
|
123
|
+
Mic
|
|
268
124
|
};
|
|
269
125
|
//# sourceMappingURL=index.mjs.map
|