@dxos/plugin-transcription 0.8.4-main.f9ba587 → 0.8.4-main.fd6878d
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-E5NBJPAY.mjs → TranscriptContainer-FH7VAWYA.mjs} +3 -3
- package/dist/lib/browser/{chunk-F2WY3YTD.mjs → chunk-BJWYA2BU.mjs} +420 -402
- package/dist/lib/browser/chunk-BJWYA2BU.mjs.map +7 -0
- package/dist/lib/browser/{chunk-VDKDOZRR.mjs → chunk-KJIQQHJB.mjs} +38 -27
- package/dist/lib/browser/chunk-KJIQQHJB.mjs.map +7 -0
- package/dist/lib/browser/{chunk-R7INNNUQ.mjs → chunk-KWOOVS5G.mjs} +1 -1
- package/dist/lib/browser/{chunk-R7INNNUQ.mjs.map → chunk-KWOOVS5G.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-U6QBOGTN.mjs → chunk-SREIAQSP.mjs} +1 -1
- package/dist/lib/browser/{chunk-U6QBOGTN.mjs.map → chunk-SREIAQSP.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-EQBICGOD.mjs → chunk-UKUSJTQW.mjs} +2 -2
- package/dist/lib/browser/index.mjs +5 -5
- package/dist/lib/browser/{intent-resolver-3O33MMP5.mjs → intent-resolver-AOVQ7JI4.mjs} +2 -2
- package/dist/lib/{node-esm/intent-resolver-YMN5SXNC.mjs.map → browser/intent-resolver-AOVQ7JI4.mjs.map} +2 -2
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-FJTMNF3K.mjs → react-surface-4MEJMKYQ.mjs} +5 -5
- package/dist/lib/browser/{transcriber-YVOTUBKQ.mjs → transcriber-V77CN7XX.mjs} +4 -4
- package/dist/lib/browser/transcriber-V77CN7XX.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node-esm/{TranscriptContainer-UOS7JG72.mjs → TranscriptContainer-GEUOOYHX.mjs} +3 -3
- package/dist/lib/node-esm/{chunk-HSCG4XPR.mjs → chunk-A33GNR44.mjs} +38 -27
- package/dist/lib/node-esm/chunk-A33GNR44.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-U65ZWK3L.mjs → chunk-IKQMDRY6.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-U65ZWK3L.mjs.map → chunk-IKQMDRY6.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-DN522SAP.mjs → chunk-PHP7MCAY.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-RHF2ALML.mjs → chunk-TM2ASOZA.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-RHF2ALML.mjs.map → chunk-TM2ASOZA.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-Q3JKLPTW.mjs → chunk-Y7PCJ34K.mjs} +420 -402
- package/dist/lib/node-esm/chunk-Y7PCJ34K.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +5 -5
- package/dist/lib/node-esm/{intent-resolver-YMN5SXNC.mjs → intent-resolver-P4XPIKQF.mjs} +2 -2
- package/dist/lib/{browser/intent-resolver-3O33MMP5.mjs.map → node-esm/intent-resolver-P4XPIKQF.mjs.map} +2 -2
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-57TSIDR2.mjs → react-surface-EZUPNHUC.mjs} +5 -5
- package/dist/lib/node-esm/{transcriber-GPBV52ZR.mjs → transcriber-3SX3DNLV.mjs} +4 -4
- package/dist/lib/node-esm/transcriber-3SX3DNLV.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +1 -1
- 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/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/transcriber.d.ts.map +1 -1
- package/dist/types/src/components/Transcript/Transcript.d.ts.map +1 -1
- package/dist/types/src/components/Transcript/Transcript.stories.d.ts.map +1 -1
- package/dist/types/src/components/TranscriptContainer.d.ts +1 -1
- package/dist/types/src/components/TranscriptContainer.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/components/stories/FileTranscription.stories.d.ts.map +1 -1
- package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts +1 -1
- package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts.map +1 -1
- package/dist/types/src/components/stories/MicrophoneTranscription.stories.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 +159 -66
- 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/index.d.ts +1 -1
- package/dist/types/src/transcriber/index.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 +1 -1
- package/dist/types/src/transcriber/transcriber.d.ts.map +1 -1
- 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/capabilities/capabilities.ts +3 -3
- package/src/capabilities/intent-resolver.ts +2 -2
- package/src/capabilities/transcriber.ts +3 -2
- package/src/components/Transcript/Transcript.stories.tsx +3 -2
- package/src/components/Transcript/Transcript.tsx +5 -4
- package/src/components/Transcript/deprecated/OldTranscript.tsx +2 -2
- package/src/components/Transcript/transcript-extension.ts +2 -2
- package/src/components/TranscriptContainer.tsx +4 -3
- package/src/components/stories/FileTranscription.stories.tsx +22 -18
- package/src/components/stories/KeyWordRecognition.stories.tsx +1 -1
- package/src/components/stories/MicrophoneTranscription.stories.tsx +17 -14
- package/src/hooks/useVoiceInput.ts +3 -2
- package/src/model/model.test.ts +9 -9
- package/src/segments-normalization/message-normalizer.ts +1 -1
- package/src/segments-normalization/normalization.test.ts +19 -21
- package/src/segments-normalization/normalization.ts +54 -45
- package/src/testing/testing.ts +11 -11
- package/src/transcriber/index.ts +1 -1
- package/src/transcriber/media-stream-recorder.ts +1 -1
- package/src/transcriber/transcriber.browser.test.ts +4 -3
- package/src/transcriber/transcriber.ts +5 -7
- package/src/transcriber/transcription-manager.ts +3 -3
- package/src/types/types.ts +2 -1
- package/dist/lib/browser/chunk-F2WY3YTD.mjs.map +0 -7
- package/dist/lib/browser/chunk-VDKDOZRR.mjs.map +0 -7
- package/dist/lib/browser/transcriber-YVOTUBKQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HSCG4XPR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-Q3JKLPTW.mjs.map +0 -7
- package/dist/lib/node-esm/transcriber-GPBV52ZR.mjs.map +0 -7
- /package/dist/lib/browser/{TranscriptContainer-E5NBJPAY.mjs.map → TranscriptContainer-FH7VAWYA.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-EQBICGOD.mjs.map → chunk-UKUSJTQW.mjs.map} +0 -0
- /package/dist/lib/browser/{react-surface-FJTMNF3K.mjs.map → react-surface-4MEJMKYQ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{TranscriptContainer-UOS7JG72.mjs.map → TranscriptContainer-GEUOOYHX.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-DN522SAP.mjs.map → chunk-PHP7MCAY.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-surface-57TSIDR2.mjs.map → react-surface-EZUPNHUC.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/meta.ts":{"bytes":1658,"imports":[],"format":"esm"},"src/capabilities/capabilities.ts":{"bytes":2831,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/types/schema.ts":{"bytes":3614,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"src/types/types.ts":{"bytes":3227,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"src/types/schema.ts","kind":"import-statement","original":"./schema"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/types/index.ts":{"bytes":549,"imports":[{"path":"src/types/schema.ts","kind":"import-statement","original":"./schema"},{"path":"src/types/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/capabilities/intent-resolver.ts":{"bytes":3175,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/model/model.ts":{"bytes":23735,"imports":[{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/model/index.ts":{"bytes":463,"imports":[{"path":"src/model/model.ts","kind":"import-statement","original":"./model"}],"format":"esm"},"src/components/Transcript/transcript-extension.ts":{"bytes":24548,"imports":[{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/intervalToDuration","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"src/model/index.ts","kind":"import-statement","original":"../../model"}],"format":"esm"},"src/components/Transcript/Transcript.tsx":{"bytes":11103,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/components/Transcript/transcript-extension.ts","kind":"import-statement","original":"./transcript-extension"}],"format":"esm"},"src/components/Transcript/index.ts":{"bytes":492,"imports":[{"path":"src/components/Transcript/Transcript.tsx","kind":"import-statement","original":"./Transcript"}],"format":"esm"},"src/hooks/useAudioFile.ts":{"bytes":10099,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useAudioTrack.ts":{"bytes":3200,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useQueueModelAdapter.ts":{"bytes":5544,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/model/index.ts","kind":"import-statement","original":"../model"}],"format":"esm"},"src/hooks/useTranscriber.ts":{"bytes":3955,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"../capabilities"}],"format":"esm"},"src/hooks/useVoiceInput.ts":{"bytes":7138,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui-sfx","kind":"import-statement","external":true},{"path":"src/hooks/useAudioTrack.ts","kind":"import-statement","original":"./useAudioTrack"},{"path":"src/hooks/useTranscriber.ts","kind":"import-statement","original":"./useTranscriber"}],"format":"esm"},"src/hooks/index.ts":{"bytes":910,"imports":[{"path":"src/hooks/useAudioFile.ts","kind":"import-statement","original":"./useAudioFile"},{"path":"src/hooks/useAudioTrack.ts","kind":"import-statement","original":"./useAudioTrack"},{"path":"src/hooks/useQueueModelAdapter.ts","kind":"import-statement","original":"./useQueueModelAdapter"},{"path":"src/hooks/useTranscriber.ts","kind":"import-statement","original":"./useTranscriber"},{"path":"src/hooks/useVoiceInput.ts","kind":"import-statement","original":"./useVoiceInput"}],"format":"esm"},"src/components/TranscriptContainer.tsx":{"bytes":4577,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"src/components/Transcript/index.ts","kind":"import-statement","original":"./Transcript"},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../hooks"}],"format":"esm"},"src/components/index.ts":{"bytes":1004,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/components/Transcript/index.ts","kind":"import-statement","original":"./Transcript"},{"path":"src/components/TranscriptContainer.tsx","kind":"import-statement","original":"./TranscriptContainer"},{"path":"src/components/TranscriptContainer.tsx","kind":"dynamic-import","original":"./TranscriptContainer"}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":3023,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/transcriber/audio-recorder.ts":{"bytes":3178,"imports":[],"format":"esm"},"src/transcriber/media-stream-recorder.ts":{"bytes":13340,"imports":[{"path":"extendable-media-recorder","kind":"import-statement","external":true},{"path":"wavefile","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"extendable-media-recorder-wav-encoder","kind":"dynamic-import","external":true}],"format":"esm"},"src/util/array.ts":{"bytes":1530,"imports":[],"format":"esm"},"src/util/get-time-str.ts":{"bytes":1288,"imports":[],"format":"esm"},"src/util/monitor-audio-level.ts":{"bytes":5885,"imports":[],"format":"esm"},"src/util/index.ts":{"bytes":681,"imports":[{"path":"src/util/array.ts","kind":"import-statement","original":"./array"},{"path":"src/util/get-time-str.ts","kind":"import-statement","original":"./get-time-str"},{"path":"src/util/monitor-audio-level.ts","kind":"import-statement","original":"./monitor-audio-level"}],"format":"esm"},"src/transcriber/transcriber.ts":{"bytes":25509,"imports":[{"path":"wavefile","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"},{"path":"src/util/index.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"src/transcriber/transcription-manager.ts":{"bytes":19855,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/transcriber/media-stream-recorder.ts","kind":"import-statement","original":"./media-stream-recorder"},{"path":"src/transcriber/transcriber.ts","kind":"import-statement","original":"./transcriber"}],"format":"esm"},"src/transcriber/index.ts":{"bytes":835,"imports":[{"path":"src/transcriber/audio-recorder.ts","kind":"import-statement","original":"./audio-recorder"},{"path":"src/transcriber/media-stream-recorder.ts","kind":"import-statement","original":"./media-stream-recorder"},{"path":"src/transcriber/transcriber.ts","kind":"import-statement","original":"./transcriber"},{"path":"src/transcriber/transcription-manager.ts","kind":"import-statement","original":"./transcription-manager"}],"format":"esm"},"src/capabilities/transcriber.ts":{"bytes":7414,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/transcriber/index.ts","kind":"import-statement","original":"../transcriber"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":1381,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/capabilities/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"},{"path":"src/capabilities/transcriber.ts","kind":"dynamic-import","original":"./transcriber"}],"format":"esm"},"src/translations.ts":{"bytes":1848,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/TranscriptionPlugin.tsx":{"bytes":9511,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/index.ts":{"bytes":1069,"imports":[{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/hooks/index.ts","kind":"import-statement","original":"./hooks"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/transcriber/index.ts","kind":"import-statement","original":"./transcriber"},{"path":"src/TranscriptionPlugin.tsx","kind":"import-statement","original":"./TranscriptionPlugin"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5570},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-EQBICGOD.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-F2WY3YTD.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-VDKDOZRR.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-R7INNNUQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-U6QBOGTN.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["MediaStreamRecorder","TRANSCRIPTION_PLUGIN","Transcriber","Transcript","TranscriptContainer","TranscriptionCapabilities","TranscriptionContainer","TranscriptionManager","TranscriptionPlugin","meta","renderMarkdown","useAudioFile","useAudioTrack","useQueueModelAdapter","useTranscriber","useVoiceInput"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/TranscriptionPlugin.tsx":{"bytesInOutput":2003},"src/translations.ts":{"bytesInOutput":361}},"bytes":3430},"dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/types/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-R7INNNUQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"}],"exports":["TRANSCRIPTION_URL","TranscriptSchema","TranscriptType","TranscriptionAction"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":282},"dist/lib/browser/intent-resolver-3O33MMP5.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1628},"dist/lib/browser/intent-resolver-3O33MMP5.mjs":{"imports":[{"path":"dist/lib/browser/chunk-R7INNNUQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/intent-resolver.ts","inputs":{"src/capabilities/intent-resolver.ts":{"bytesInOutput":627}},"bytes":881},"dist/lib/browser/TranscriptContainer-E5NBJPAY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/TranscriptContainer-E5NBJPAY.mjs":{"imports":[{"path":"dist/lib/browser/chunk-F2WY3YTD.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-U6QBOGTN.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"}],"exports":["TranscriptionContainer","default"],"entryPoint":"src/components/TranscriptContainer.tsx","inputs":{},"bytes":295},"dist/lib/browser/react-surface-FJTMNF3K.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1462},"dist/lib/browser/react-surface-FJTMNF3K.mjs":{"imports":[{"path":"dist/lib/browser/chunk-EQBICGOD.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-F2WY3YTD.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-R7INNNUQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-U6QBOGTN.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":551}},"bytes":920},"dist/lib/browser/chunk-EQBICGOD.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":453},"dist/lib/browser/chunk-EQBICGOD.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"dist/lib/browser/TranscriptContainer-E5NBJPAY.mjs","kind":"dynamic-import"}],"exports":["TranscriptContainer"],"inputs":{"src/components/index.ts":{"bytesInOutput":114}},"bytes":220},"dist/lib/browser/chunk-F2WY3YTD.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":46766},"dist/lib/browser/chunk-F2WY3YTD.mjs":{"imports":[{"path":"dist/lib/browser/chunk-U6QBOGTN.mjs","kind":"import-statement"},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/intervalToDuration","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/intent-resolver-3O33MMP5.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/react-surface-FJTMNF3K.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/transcriber-YVOTUBKQ.mjs","kind":"dynamic-import"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui-sfx","kind":"import-statement","external":true}],"exports":["IntentResolver","ReactSurface","Transcriber","Transcript","TranscriptContainer_default","TranscriptionContainer","renderMarkdown","useAudioFile","useAudioTrack","useQueueModelAdapter","useTranscriber","useVoiceInput"],"inputs":{"src/components/TranscriptContainer.tsx":{"bytesInOutput":1094},"src/components/Transcript/Transcript.tsx":{"bytesInOutput":2474},"src/components/Transcript/transcript-extension.ts":{"bytesInOutput":5452},"src/model/model.ts":{"bytesInOutput":5023},"src/model/index.ts":{"bytesInOutput":0},"src/components/Transcript/index.ts":{"bytesInOutput":0},"src/hooks/useAudioFile.ts":{"bytesInOutput":2706},"src/hooks/index.ts":{"bytesInOutput":0},"src/hooks/useAudioTrack.ts":{"bytesInOutput":656},"src/hooks/useQueueModelAdapter.ts":{"bytesInOutput":1075},"src/hooks/useTranscriber.ts":{"bytesInOutput":804},"src/capabilities/index.ts":{"bytesInOutput":258},"src/hooks/useVoiceInput.ts":{"bytesInOutput":1869}},"bytes":22296},"dist/lib/browser/transcriber-YVOTUBKQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3706},"dist/lib/browser/transcriber-YVOTUBKQ.mjs":{"imports":[{"path":"dist/lib/browser/chunk-VDKDOZRR.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-R7INNNUQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-U6QBOGTN.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/transcriber.ts","inputs":{"src/capabilities/transcriber.ts":{"bytesInOutput":1381}},"bytes":1743},"dist/lib/browser/chunk-VDKDOZRR.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":29031},"dist/lib/browser/chunk-VDKDOZRR.mjs":{"imports":[{"path":"dist/lib/browser/chunk-R7INNNUQ.mjs","kind":"import-statement"},{"path":"extendable-media-recorder","kind":"import-statement","external":true},{"path":"wavefile","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"extendable-media-recorder-wav-encoder","kind":"dynamic-import","external":true},{"path":"wavefile","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["MediaStreamRecorder","Transcriber","TranscriptionManager"],"inputs":{"src/transcriber/media-stream-recorder.ts":{"bytesInOutput":3734},"src/transcriber/transcriber.ts":{"bytesInOutput":6151},"src/util/array.ts":{"bytesInOutput":267},"src/util/index.ts":{"bytesInOutput":0},"src/transcriber/transcription-manager.ts":{"bytesInOutput":4909},"src/transcriber/index.ts":{"bytesInOutput":0}},"bytes":15421},"dist/lib/browser/chunk-R7INNNUQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3298},"dist/lib/browser/chunk-R7INNNUQ.mjs":{"imports":[{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true}],"exports":["TRANSCRIPTION_URL","TranscriptSchema","TranscriptType","TranscriptionAction"],"inputs":{"src/types/schema.ts":{"bytesInOutput":665},"src/types/index.ts":{"bytesInOutput":0},"src/types/types.ts":{"bytesInOutput":642}},"bytes":1555},"dist/lib/browser/chunk-U6QBOGTN.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1631},"dist/lib/browser/chunk-U6QBOGTN.mjs":{"imports":[{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["TranscriptionCapabilities"],"inputs":{"src/capabilities/capabilities.ts":{"bytesInOutput":435}},"bytes":620},"dist/lib/browser/chunk-5WH45KBY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":817},"dist/lib/browser/chunk-5WH45KBY.mjs":{"imports":[],"exports":["TRANSCRIPTION_PLUGIN","meta"],"inputs":{"src/meta.ts":{"bytesInOutput":337}},"bytes":440}}}
|
|
1
|
+
{"inputs":{"src/meta.ts":{"bytes":1658,"imports":[],"format":"esm"},"src/capabilities/capabilities.ts":{"bytes":2831,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/types/schema.ts":{"bytes":3614,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"src/types/types.ts":{"bytes":3231,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/types/schema.ts","kind":"import-statement","original":"./schema"}],"format":"esm"},"src/types/index.ts":{"bytes":549,"imports":[{"path":"src/types/schema.ts","kind":"import-statement","original":"./schema"},{"path":"src/types/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/capabilities/intent-resolver.ts":{"bytes":3175,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/model/model.ts":{"bytes":23735,"imports":[{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/model/index.ts":{"bytes":463,"imports":[{"path":"src/model/model.ts","kind":"import-statement","original":"./model"}],"format":"esm"},"src/components/Transcript/transcript-extension.ts":{"bytes":24534,"imports":[{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/intervalToDuration","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"src/model/index.ts","kind":"import-statement","original":"../../model"}],"format":"esm"},"src/components/Transcript/Transcript.tsx":{"bytes":11171,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/components/Transcript/transcript-extension.ts","kind":"import-statement","original":"./transcript-extension"}],"format":"esm"},"src/components/Transcript/index.ts":{"bytes":492,"imports":[{"path":"src/components/Transcript/Transcript.tsx","kind":"import-statement","original":"./Transcript"}],"format":"esm"},"src/hooks/useAudioFile.ts":{"bytes":10099,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useAudioTrack.ts":{"bytes":3200,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useQueueModelAdapter.ts":{"bytes":5544,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/model/index.ts","kind":"import-statement","original":"../model"}],"format":"esm"},"src/hooks/useTranscriber.ts":{"bytes":3955,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"../capabilities"}],"format":"esm"},"src/hooks/useVoiceInput.ts":{"bytes":7138,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui-sfx","kind":"import-statement","external":true},{"path":"src/hooks/useAudioTrack.ts","kind":"import-statement","original":"./useAudioTrack"},{"path":"src/hooks/useTranscriber.ts","kind":"import-statement","original":"./useTranscriber"}],"format":"esm"},"src/hooks/index.ts":{"bytes":910,"imports":[{"path":"src/hooks/useAudioFile.ts","kind":"import-statement","original":"./useAudioFile"},{"path":"src/hooks/useAudioTrack.ts","kind":"import-statement","original":"./useAudioTrack"},{"path":"src/hooks/useQueueModelAdapter.ts","kind":"import-statement","original":"./useQueueModelAdapter"},{"path":"src/hooks/useTranscriber.ts","kind":"import-statement","original":"./useTranscriber"},{"path":"src/hooks/useVoiceInput.ts","kind":"import-statement","original":"./useVoiceInput"}],"format":"esm"},"src/components/TranscriptContainer.tsx":{"bytes":4483,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../hooks"},{"path":"src/components/Transcript/index.ts","kind":"import-statement","original":"./Transcript"}],"format":"esm"},"src/components/index.ts":{"bytes":1004,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/components/Transcript/index.ts","kind":"import-statement","original":"./Transcript"},{"path":"src/components/TranscriptContainer.tsx","kind":"import-statement","original":"./TranscriptContainer"},{"path":"src/components/TranscriptContainer.tsx","kind":"dynamic-import","original":"./TranscriptContainer"}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":3023,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/transcriber/media-stream-recorder.ts":{"bytes":13340,"imports":[{"path":"extendable-media-recorder","kind":"import-statement","external":true},{"path":"wavefile","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"extendable-media-recorder-wav-encoder","kind":"dynamic-import","external":true}],"format":"esm"},"src/util/array.ts":{"bytes":1530,"imports":[],"format":"esm"},"src/util/get-time-str.ts":{"bytes":1288,"imports":[],"format":"esm"},"src/util/monitor-audio-level.ts":{"bytes":5885,"imports":[],"format":"esm"},"src/util/index.ts":{"bytes":681,"imports":[{"path":"src/util/array.ts","kind":"import-statement","original":"./array"},{"path":"src/util/get-time-str.ts","kind":"import-statement","original":"./get-time-str"},{"path":"src/util/monitor-audio-level.ts","kind":"import-statement","original":"./monitor-audio-level"}],"format":"esm"},"src/transcriber/transcriber.ts":{"bytes":25474,"imports":[{"path":"wavefile","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"},{"path":"src/util/index.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"src/transcriber/transcription-manager.ts":{"bytes":19837,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/transcriber/media-stream-recorder.ts","kind":"import-statement","original":"./media-stream-recorder"},{"path":"src/transcriber/transcriber.ts","kind":"import-statement","original":"./transcriber"}],"format":"esm"},"src/transcriber/index.ts":{"bytes":781,"imports":[{"path":"src/transcriber/media-stream-recorder.ts","kind":"import-statement","original":"./media-stream-recorder"},{"path":"src/transcriber/transcriber.ts","kind":"import-statement","original":"./transcriber"},{"path":"src/transcriber/transcription-manager.ts","kind":"import-statement","original":"./transcription-manager"}],"format":"esm"},"src/capabilities/transcriber.ts":{"bytes":7418,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"src/transcriber/index.ts","kind":"import-statement","original":"../transcriber"},{"path":"src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":1381,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/capabilities/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"},{"path":"src/capabilities/transcriber.ts","kind":"dynamic-import","original":"./transcriber"}],"format":"esm"},"src/translations.ts":{"bytes":1848,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/TranscriptionPlugin.tsx":{"bytes":9511,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/index.ts":{"bytes":1069,"imports":[{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/hooks/index.ts","kind":"import-statement","original":"./hooks"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/transcriber/index.ts","kind":"import-statement","original":"./transcriber"},{"path":"src/TranscriptionPlugin.tsx","kind":"import-statement","original":"./TranscriptionPlugin"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5570},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-UKUSJTQW.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-BJWYA2BU.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-KJIQQHJB.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-KWOOVS5G.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-SREIAQSP.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["MediaStreamRecorder","TRANSCRIPTION_PLUGIN","Transcriber","Transcript","TranscriptContainer","TranscriptionCapabilities","TranscriptionContainer","TranscriptionManager","TranscriptionPlugin","meta","renderMarkdown","useAudioFile","useAudioTrack","useQueueModelAdapter","useTranscriber","useVoiceInput"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/TranscriptionPlugin.tsx":{"bytesInOutput":2003},"src/translations.ts":{"bytesInOutput":361}},"bytes":3430},"dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/types/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-KWOOVS5G.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"}],"exports":["TRANSCRIPTION_URL","TranscriptSchema","TranscriptType","TranscriptionAction"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":282},"dist/lib/browser/intent-resolver-AOVQ7JI4.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1629},"dist/lib/browser/intent-resolver-AOVQ7JI4.mjs":{"imports":[{"path":"dist/lib/browser/chunk-KWOOVS5G.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/intent-resolver.ts","inputs":{"src/capabilities/intent-resolver.ts":{"bytesInOutput":627}},"bytes":881},"dist/lib/browser/TranscriptContainer-FH7VAWYA.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/TranscriptContainer-FH7VAWYA.mjs":{"imports":[{"path":"dist/lib/browser/chunk-BJWYA2BU.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-SREIAQSP.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"}],"exports":["TranscriptionContainer","default"],"entryPoint":"src/components/TranscriptContainer.tsx","inputs":{},"bytes":295},"dist/lib/browser/react-surface-4MEJMKYQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1462},"dist/lib/browser/react-surface-4MEJMKYQ.mjs":{"imports":[{"path":"dist/lib/browser/chunk-UKUSJTQW.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-BJWYA2BU.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-KWOOVS5G.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-SREIAQSP.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":551}},"bytes":920},"dist/lib/browser/chunk-UKUSJTQW.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":453},"dist/lib/browser/chunk-UKUSJTQW.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"dist/lib/browser/TranscriptContainer-FH7VAWYA.mjs","kind":"dynamic-import"}],"exports":["TranscriptContainer"],"inputs":{"src/components/index.ts":{"bytesInOutput":114}},"bytes":220},"dist/lib/browser/chunk-BJWYA2BU.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":46835},"dist/lib/browser/chunk-BJWYA2BU.mjs":{"imports":[{"path":"dist/lib/browser/chunk-SREIAQSP.mjs","kind":"import-statement"},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/intent-resolver-AOVQ7JI4.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/react-surface-4MEJMKYQ.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/transcriber-V77CN7XX.mjs","kind":"dynamic-import"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui-sfx","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/intervalToDuration","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true}],"exports":["IntentResolver","ReactSurface","Transcriber","Transcript","TranscriptContainer_default","TranscriptionContainer","renderMarkdown","useAudioFile","useAudioTrack","useQueueModelAdapter","useTranscriber","useVoiceInput"],"inputs":{"src/components/TranscriptContainer.tsx":{"bytesInOutput":1076},"src/hooks/useAudioFile.ts":{"bytesInOutput":2688},"src/hooks/index.ts":{"bytesInOutput":0},"src/hooks/useAudioTrack.ts":{"bytesInOutput":656},"src/hooks/useQueueModelAdapter.ts":{"bytesInOutput":1075},"src/model/model.ts":{"bytesInOutput":5351},"src/model/index.ts":{"bytesInOutput":0},"src/hooks/useTranscriber.ts":{"bytesInOutput":804},"src/capabilities/index.ts":{"bytesInOutput":258},"src/hooks/useVoiceInput.ts":{"bytesInOutput":1869},"src/components/Transcript/Transcript.tsx":{"bytesInOutput":2494},"src/components/Transcript/transcript-extension.ts":{"bytesInOutput":5523},"src/components/Transcript/index.ts":{"bytesInOutput":0}},"bytes":22663},"dist/lib/browser/transcriber-V77CN7XX.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3709},"dist/lib/browser/transcriber-V77CN7XX.mjs":{"imports":[{"path":"dist/lib/browser/chunk-KJIQQHJB.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-KWOOVS5G.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-SREIAQSP.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/transcriber.ts","inputs":{"src/capabilities/transcriber.ts":{"bytesInOutput":1381}},"bytes":1743},"dist/lib/browser/chunk-KJIQQHJB.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":29042},"dist/lib/browser/chunk-KJIQQHJB.mjs":{"imports":[{"path":"dist/lib/browser/chunk-KWOOVS5G.mjs","kind":"import-statement"},{"path":"extendable-media-recorder","kind":"import-statement","external":true},{"path":"wavefile","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"extendable-media-recorder-wav-encoder","kind":"dynamic-import","external":true},{"path":"wavefile","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["MediaStreamRecorder","Transcriber","TranscriptionManager"],"inputs":{"src/transcriber/media-stream-recorder.ts":{"bytesInOutput":3845},"src/transcriber/transcriber.ts":{"bytesInOutput":6148},"src/util/array.ts":{"bytesInOutput":267},"src/util/index.ts":{"bytesInOutput":0},"src/transcriber/transcription-manager.ts":{"bytesInOutput":4896},"src/transcriber/index.ts":{"bytesInOutput":0}},"bytes":15516},"dist/lib/browser/chunk-KWOOVS5G.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3300},"dist/lib/browser/chunk-KWOOVS5G.mjs":{"imports":[{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true}],"exports":["TRANSCRIPTION_URL","TranscriptSchema","TranscriptType","TranscriptionAction"],"inputs":{"src/types/schema.ts":{"bytesInOutput":665},"src/types/index.ts":{"bytesInOutput":0},"src/types/types.ts":{"bytesInOutput":642}},"bytes":1555},"dist/lib/browser/chunk-SREIAQSP.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1631},"dist/lib/browser/chunk-SREIAQSP.mjs":{"imports":[{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["TranscriptionCapabilities"],"inputs":{"src/capabilities/capabilities.ts":{"bytesInOutput":435}},"bytes":620},"dist/lib/browser/chunk-5WH45KBY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":817},"dist/lib/browser/chunk-5WH45KBY.mjs":{"imports":[],"exports":["TRANSCRIPTION_PLUGIN","meta"],"inputs":{"src/meta.ts":{"bytesInOutput":337}},"bytes":440}}}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "./chunk-
|
|
1
|
+
import "./chunk-UKUSJTQW.mjs";
|
|
2
2
|
import {
|
|
3
3
|
TranscriptionContainer
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-BJWYA2BU.mjs";
|
|
5
5
|
import {
|
|
6
6
|
TranscriptType
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-KWOOVS5G.mjs";
|
|
8
|
+
import "./chunk-SREIAQSP.mjs";
|
|
9
9
|
import {
|
|
10
10
|
meta
|
|
11
11
|
} from "./chunk-5WH45KBY.mjs";
|
|
@@ -31,4 +31,4 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
|
|
|
31
31
|
export {
|
|
32
32
|
react_surface_default as default
|
|
33
33
|
};
|
|
34
|
-
//# sourceMappingURL=react-surface-
|
|
34
|
+
//# sourceMappingURL=react-surface-4MEJMKYQ.mjs.map
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
MediaStreamRecorder,
|
|
3
3
|
Transcriber,
|
|
4
4
|
TranscriptionManager
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-KJIQQHJB.mjs";
|
|
6
|
+
import "./chunk-KWOOVS5G.mjs";
|
|
7
7
|
import {
|
|
8
8
|
TranscriptionCapabilities
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-SREIAQSP.mjs";
|
|
10
10
|
import "./chunk-5WH45KBY.mjs";
|
|
11
11
|
|
|
12
12
|
// src/capabilities/transcriber.ts
|
|
@@ -53,4 +53,4 @@ var transcriber_default = (context) => {
|
|
|
53
53
|
export {
|
|
54
54
|
transcriber_default as default
|
|
55
55
|
};
|
|
56
|
-
//# sourceMappingURL=transcriber-
|
|
56
|
+
//# sourceMappingURL=transcriber-V77CN7XX.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/transcriber.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type PluginContext, contributes } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { MediaStreamRecorder, Transcriber, TranscriptionManager } from '../transcriber';\n\nimport { TranscriptionCapabilities } from './capabilities';\n\n// TODO(burdon): Move to config?\n\n/**\n * Length of the chunk in ms.\n */\nconst RECORD_INTERVAL = 200;\n\n/**\n * Number of chunks to save before the user starts speaking.\n */\nconst PREFIXED_CHUNKS_AMOUNT = 10;\n\n/**\n * Number of chunks to transcribe automatically after.\n * Combined should be mess than 25MB or whisper would fail.\n */\nconst TRANSCRIBE_AFTER_CHUNKS_AMOUNT = 50;\n\n/**\n * Records audio while user is speaking and transcribes it after user is done speaking.\n */\nexport default (context: PluginContext) => {\n const getTranscriber: TranscriptionCapabilities.GetTranscriber = ({\n audioStreamTrack,\n onSegments,\n transcriberConfig,\n recorderConfig,\n }) => {\n // Initialize audio transcription.\n return new Transcriber({\n config: {\n transcribeAfterChunksAmount: TRANSCRIBE_AFTER_CHUNKS_AMOUNT,\n prefixBufferChunksAmount: PREFIXED_CHUNKS_AMOUNT,\n ...transcriberConfig,\n },\n recorder: new MediaStreamRecorder({\n mediaStreamTrack: audioStreamTrack,\n config: {\n interval: RECORD_INTERVAL,\n ...recorderConfig,\n },\n }),\n onSegments,\n });\n };\n\n const getTranscriptionManager: TranscriptionCapabilities.GetTranscriptionManager = ({ messageEnricher }) => {\n const client = context.getCapability(ClientCapabilities.Client);\n const transcriptionManager = new TranscriptionManager({\n edgeClient: client.edge,\n messageEnricher,\n });\n\n const identity = client.halo.identity.get();\n if (identity) {\n transcriptionManager.setIdentityDid(identity.did);\n }\n\n return transcriptionManager;\n };\n\n return [\n contributes(TranscriptionCapabilities.Transcriber, getTranscriber),\n contributes(TranscriptionCapabilities.TranscriptionManager, getTranscriptionManager),\n ];\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;AAIA,SAA6BA,mBAAmB;AAChD,SAASC,0BAA0B;AAWnC,IAAMC,kBAAkB;AAKxB,IAAMC,yBAAyB;AAM/B,IAAMC,iCAAiC;AAKvC,IAAA,sBAAe,CAACC,YAAAA;AACd,QAAMC,iBAA2D,CAAC,EAChEC,kBACAC,YACAC,mBACAC,eAAc,MACf;AAEC,WAAO,IAAIC,YAAY;MACrBC,QAAQ;QACNC,6BAA6BT;QAC7BU,0BAA0BX;QAC1B,GAAGM;MACL;MACAM,UAAU,IAAIC,oBAAoB;QAChCC,kBAAkBV;QAClBK,QAAQ;UACNM,UAAUhB;UACV,GAAGQ;QACL;MACF,CAAA;MACAF;IACF,CAAA;EACF;AAEA,QAAMW,0BAA6E,CAAC,EAAEC,gBAAe,MAAE;AACrG,UAAMC,SAAShB,QAAQiB,cAAcC,mBAAmBC,MAAM;AAC9D,UAAMC,uBAAuB,IAAIC,qBAAqB;MACpDC,YAAYN,OAAOO;MACnBR;IACF,CAAA;AAEA,UAAMS,WAAWR,OAAOS,KAAKD,SAASE,IAAG;AACzC,QAAIF,UAAU;AACZJ,2BAAqBO,eAAeH,SAASI,GAAG;IAClD;AAEA,WAAOR;EACT;AAEA,SAAO;IACLS,YAAYC,0BAA0BxB,aAAaL,cAAAA;IACnD4B,YAAYC,0BAA0BT,sBAAsBP,uBAAAA;;AAEhE;",
|
|
6
|
+
"names": ["contributes", "ClientCapabilities", "RECORD_INTERVAL", "PREFIXED_CHUNKS_AMOUNT", "TRANSCRIBE_AFTER_CHUNKS_AMOUNT", "context", "getTranscriber", "audioStreamTrack", "onSegments", "transcriberConfig", "recorderConfig", "Transcriber", "config", "transcribeAfterChunksAmount", "prefixBufferChunksAmount", "recorder", "MediaStreamRecorder", "mediaStreamTrack", "interval", "getTranscriptionManager", "messageEnricher", "client", "getCapability", "ClientCapabilities", "Client", "transcriptionManager", "TranscriptionManager", "edgeClient", "edge", "identity", "halo", "get", "setIdentityDid", "did", "contributes", "TranscriptionCapabilities"]
|
|
7
|
+
}
|
package/dist/lib/node-esm/{TranscriptContainer-UOS7JG72.mjs → TranscriptContainer-GEUOOYHX.mjs}
RENAMED
|
@@ -2,11 +2,11 @@ import { createRequire } from 'node:module';const require = createRequire(import
|
|
|
2
2
|
import {
|
|
3
3
|
TranscriptContainer_default,
|
|
4
4
|
TranscriptionContainer
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-Y7PCJ34K.mjs";
|
|
6
|
+
import "./chunk-TM2ASOZA.mjs";
|
|
7
7
|
import "./chunk-XMUCZBP3.mjs";
|
|
8
8
|
export {
|
|
9
9
|
TranscriptionContainer,
|
|
10
10
|
TranscriptContainer_default as default
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=TranscriptContainer-
|
|
12
|
+
//# sourceMappingURL=TranscriptContainer-GEUOOYHX.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
TRANSCRIPTION_URL
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IKQMDRY6.mjs";
|
|
5
5
|
|
|
6
6
|
// src/transcriber/media-stream-recorder.ts
|
|
7
7
|
import { MediaRecorder, register } from "extendable-media-recorder";
|
|
@@ -23,9 +23,15 @@ var initializeExtendableMediaRecorder = async () => {
|
|
|
23
23
|
await register(await connect());
|
|
24
24
|
};
|
|
25
25
|
var MediaStreamRecorder = class {
|
|
26
|
+
_mediaStreamTrack;
|
|
27
|
+
/**
|
|
28
|
+
* Default MediaRecorder implementation do not support wav encoding.
|
|
29
|
+
*/
|
|
30
|
+
_config;
|
|
31
|
+
_mediaRecorder = void 0;
|
|
32
|
+
_header = void 0;
|
|
33
|
+
_onChunk;
|
|
26
34
|
constructor({ mediaStreamTrack, config }) {
|
|
27
|
-
this._mediaRecorder = void 0;
|
|
28
|
-
this._header = void 0;
|
|
29
35
|
this._mediaStreamTrack = mediaStreamTrack;
|
|
30
36
|
this._config = config;
|
|
31
37
|
}
|
|
@@ -146,15 +152,18 @@ function _ts_decorate2(decorators, target, key, desc) {
|
|
|
146
152
|
}
|
|
147
153
|
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-transcription/src/transcriber/transcriber.ts";
|
|
148
154
|
var Transcriber = class extends Resource {
|
|
155
|
+
_audioChunks = [];
|
|
156
|
+
_lastUsedTimestamp = 0;
|
|
157
|
+
_openTrigger = new Trigger({
|
|
158
|
+
autoReset: true
|
|
159
|
+
});
|
|
160
|
+
_config;
|
|
161
|
+
_recorder;
|
|
162
|
+
_onSegments;
|
|
163
|
+
_recording = false;
|
|
164
|
+
_transcribeTask = void 0;
|
|
149
165
|
constructor({ config, recorder, onSegments }) {
|
|
150
166
|
super();
|
|
151
|
-
this._audioChunks = [];
|
|
152
|
-
this._lastUsedTimestamp = 0;
|
|
153
|
-
this._openTrigger = new Trigger({
|
|
154
|
-
autoReset: true
|
|
155
|
-
});
|
|
156
|
-
this._recording = false;
|
|
157
|
-
this._transcribeTask = void 0;
|
|
158
167
|
this._config = config;
|
|
159
168
|
this._recorder = recorder;
|
|
160
169
|
this._onSegments = onSegments;
|
|
@@ -162,7 +171,7 @@ var Transcriber = class extends Resource {
|
|
|
162
171
|
async _open(ctx) {
|
|
163
172
|
log2.info("opening", void 0, {
|
|
164
173
|
F: __dxlog_file2,
|
|
165
|
-
L:
|
|
174
|
+
L: 102,
|
|
166
175
|
S: this,
|
|
167
176
|
C: (f, a) => f(...a)
|
|
168
177
|
});
|
|
@@ -174,7 +183,7 @@ var Transcriber = class extends Resource {
|
|
|
174
183
|
async _close() {
|
|
175
184
|
log2.info("closing", void 0, {
|
|
176
185
|
F: __dxlog_file2,
|
|
177
|
-
L:
|
|
186
|
+
L: 110,
|
|
178
187
|
S: this,
|
|
179
188
|
C: (f, a) => f(...a)
|
|
180
189
|
});
|
|
@@ -185,7 +194,7 @@ var Transcriber = class extends Resource {
|
|
|
185
194
|
startChunksRecording() {
|
|
186
195
|
log2.info("starting", void 0, {
|
|
187
196
|
F: __dxlog_file2,
|
|
188
|
-
L:
|
|
197
|
+
L: 117,
|
|
189
198
|
S: this,
|
|
190
199
|
C: (f, a) => f(...a)
|
|
191
200
|
});
|
|
@@ -202,7 +211,7 @@ var Transcriber = class extends Resource {
|
|
|
202
211
|
this._transcribeTask?.schedule();
|
|
203
212
|
log2.info("stopped", void 0, {
|
|
204
213
|
F: __dxlog_file2,
|
|
205
|
-
L:
|
|
214
|
+
L: 132,
|
|
206
215
|
S: this,
|
|
207
216
|
C: (f, a) => f(...a)
|
|
208
217
|
});
|
|
@@ -212,7 +221,7 @@ var Transcriber = class extends Resource {
|
|
|
212
221
|
chunk
|
|
213
222
|
}, {
|
|
214
223
|
F: __dxlog_file2,
|
|
215
|
-
L:
|
|
224
|
+
L: 136,
|
|
216
225
|
S: this,
|
|
217
226
|
C: (f, a) => f(...a)
|
|
218
227
|
});
|
|
@@ -228,7 +237,7 @@ var Transcriber = class extends Resource {
|
|
|
228
237
|
chunks: this._audioChunks.length
|
|
229
238
|
}, {
|
|
230
239
|
F: __dxlog_file2,
|
|
231
|
-
L:
|
|
240
|
+
L: 152,
|
|
232
241
|
S: this,
|
|
233
242
|
C: (f, a) => f(...a)
|
|
234
243
|
});
|
|
@@ -280,7 +289,7 @@ var Transcriber = class extends Resource {
|
|
|
280
289
|
string: segments.map((segments2) => segments2.text).join(" ")
|
|
281
290
|
}, {
|
|
282
291
|
F: __dxlog_file2,
|
|
283
|
-
L:
|
|
292
|
+
L: 216,
|
|
284
293
|
S: this,
|
|
285
294
|
C: (f, a) => f(...a)
|
|
286
295
|
});
|
|
@@ -302,7 +311,7 @@ var Transcriber = class extends Resource {
|
|
|
302
311
|
}
|
|
303
312
|
this._lastUsedTimestamp = zeroTimestamp + filteredSegments.at(-1).end * 1e3;
|
|
304
313
|
return filteredSegments.map((segment) => ({
|
|
305
|
-
|
|
314
|
+
_tag: "transcript",
|
|
306
315
|
started: new Date(zeroTimestamp + segment.start * 1e3).toISOString(),
|
|
307
316
|
text: segment.text.trim()
|
|
308
317
|
}));
|
|
@@ -335,14 +344,16 @@ var RECORD_INTERVAL = 200;
|
|
|
335
344
|
var PREFIXED_CHUNKS_AMOUNT = 10;
|
|
336
345
|
var TRANSCRIBE_AFTER_CHUNKS_AMOUNT = 50;
|
|
337
346
|
var TranscriptionManager = class extends Resource2 {
|
|
347
|
+
_edgeClient;
|
|
348
|
+
_messageEnricher;
|
|
349
|
+
_audioStreamTrack = void 0;
|
|
350
|
+
_identityDid = void 0;
|
|
351
|
+
_mediaRecorder = void 0;
|
|
352
|
+
_transcriber = void 0;
|
|
353
|
+
_queue = void 0;
|
|
354
|
+
_enabled = signal(false);
|
|
338
355
|
constructor(options) {
|
|
339
356
|
super();
|
|
340
|
-
this._audioStreamTrack = void 0;
|
|
341
|
-
this._identityDid = void 0;
|
|
342
|
-
this._mediaRecorder = void 0;
|
|
343
|
-
this._transcriber = void 0;
|
|
344
|
-
this._queue = void 0;
|
|
345
|
-
this._enabled = signal(false);
|
|
346
357
|
this._edgeClient = options.edgeClient;
|
|
347
358
|
this._messageEnricher = options.messageEnricher;
|
|
348
359
|
}
|
|
@@ -404,7 +415,7 @@ var TranscriptionManager = class extends Resource2 {
|
|
|
404
415
|
created: (/* @__PURE__ */ new Date()).toISOString(),
|
|
405
416
|
blocks: [
|
|
406
417
|
{
|
|
407
|
-
|
|
418
|
+
_tag: "transcript",
|
|
408
419
|
text: "Started",
|
|
409
420
|
started: (/* @__PURE__ */ new Date()).toISOString()
|
|
410
421
|
}
|
|
@@ -422,7 +433,7 @@ var TranscriptionManager = class extends Resource2 {
|
|
|
422
433
|
created: (/* @__PURE__ */ new Date()).toISOString(),
|
|
423
434
|
blocks: [
|
|
424
435
|
{
|
|
425
|
-
|
|
436
|
+
_tag: "transcript",
|
|
426
437
|
text: "Stopped",
|
|
427
438
|
started: (/* @__PURE__ */ new Date()).toISOString()
|
|
428
439
|
}
|
|
@@ -493,4 +504,4 @@ export {
|
|
|
493
504
|
Transcriber,
|
|
494
505
|
TranscriptionManager
|
|
495
506
|
};
|
|
496
|
-
//# sourceMappingURL=chunk-
|
|
507
|
+
//# sourceMappingURL=chunk-A33GNR44.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/transcriber/media-stream-recorder.ts", "../../../src/transcriber/transcriber.ts", "../../../src/util/array.ts", "../../../src/transcriber/transcription-manager.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type IBlobEvent, type IMediaRecorder, MediaRecorder, register } from 'extendable-media-recorder';\nimport { WaveFile } from 'wavefile';\n\nimport { synchronized } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { trace } from '@dxos/tracing';\n\nimport { type AudioChunk, type AudioRecorder, type WavConfig } from './audio-recorder';\n\nlet initializingPromise: Promise<void> | undefined;\n\nconst initializeExtendableMediaRecorder = async () => {\n const { connect } = await import('extendable-media-recorder-wav-encoder');\n await register(await connect());\n};\n\nexport type MediaStreamRecorderParams = {\n mediaStreamTrack: MediaStreamTrack;\n config: {\n interval: number;\n };\n};\n\n/**\n * Recorder that uses the MediaContext API and AudioNode API to record audio.\n *\n * It records MediaStream using https://www.npmjs.com/package/extendable-media-recorder.\n */\n@trace.resource()\nexport class MediaStreamRecorder implements AudioRecorder {\n private readonly _mediaStreamTrack: MediaStreamTrack;\n /**\n * Default MediaRecorder implementation do not support wav encoding.\n */\n private readonly _config: MediaStreamRecorderParams['config'];\n private _mediaRecorder?: IMediaRecorder = undefined;\n private _header?: Uint8Array = undefined;\n private _onChunk?: (chunk: AudioChunk) => void;\n\n constructor({ mediaStreamTrack, config }: MediaStreamRecorderParams) {\n this._mediaStreamTrack = mediaStreamTrack;\n this._config = config;\n }\n\n get wavConfig(): WavConfig {\n const settings = this._mediaStreamTrack.getSettings();\n return {\n channels: settings.channelCount ?? 1,\n sampleRate: settings.sampleRate ?? 16000,\n bitDepthCode: settings.sampleSize ? String(settings.sampleSize) : '16',\n };\n }\n\n get mediaStreamTrack() {\n return this._mediaStreamTrack;\n }\n\n setOnChunk(onChunk: (chunk: AudioChunk) => void): void {\n this._onChunk = onChunk;\n }\n\n async start(): Promise<void> {\n await (initializingPromise ??= initializeExtendableMediaRecorder()).catch((err) =>\n log.info('initializeExtendableMediaRecorder', { err }),\n );\n\n if (!this._mediaRecorder) {\n const stream = new MediaStream([this._mediaStreamTrack]);\n this._mediaRecorder = new MediaRecorder(stream, { mimeType: 'audio/wav' });\n }\n\n if (this._mediaRecorder.state === 'recording') {\n return;\n }\n invariant(this._onChunk, 'MediaStreamRecorder: onChunk is not set');\n this._mediaRecorder.ondataavailable = (event) => this._ondataavailable(event);\n this._mediaRecorder.start(this._config.interval);\n }\n\n async stop(): Promise<void> {\n if (this._mediaRecorder?.state !== 'recording') {\n return;\n }\n this._mediaRecorder.stop();\n }\n\n @synchronized\n private async _ondataavailable(event: IBlobEvent): Promise<void> {\n const blob = event.data;\n const uint8Array = new Uint8Array(await blob.arrayBuffer());\n\n // First chunk from the MediaRecorder has a header.\n const isHeader =\n uint8Array[0] === 0x52 && // R\n uint8Array[1] === 0x49 && // I\n uint8Array[2] === 0x46 && // F\n uint8Array[3] === 0x46; // F\n let wav: WaveFile;\n\n if (isHeader) {\n wav = new WaveFile(uint8Array);\n this._header = uint8Array.slice(0, 44);\n } else if (this._header) {\n wav = new WaveFile(new Uint8Array([...this._header, ...uint8Array]));\n } else {\n log.warn('MediaStreamRecorder: no header');\n return;\n }\n\n this._onChunk!({\n timestamp: Date.now(),\n data: wav.getSamples(),\n });\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { WaveFile } from 'wavefile';\n\nimport { DeferredTask, Trigger } from '@dxos/async';\nimport { type Context, LifecycleState, Resource } from '@dxos/context';\nimport { log } from '@dxos/log';\nimport { type DataType } from '@dxos/schema';\nimport { trace } from '@dxos/tracing';\n\nimport { TRANSCRIPTION_URL } from '../types';\nimport { mergeFloat64Arrays } from '../util';\n\nimport { type AudioChunk, type AudioRecorder } from './audio-recorder';\n\ntype WhisperWord = {\n word: string;\n\n /**\n * Time in seconds from the start of the audio.\n */\n start: number;\n\n /**\n * Time in seconds from the start of the audio.\n */\n end: number;\n};\n\ntype WhisperSegment = {\n text: string;\n\n /**\n * Time in seconds from the start of the audio.\n */\n start: number;\n\n /**\n * Time in seconds from the start of the audio.\n */\n end: number;\n\n /**\n * Probability of no speech in the segment.\n */\n no_speech_prob: number;\n\n words: WhisperWord[];\n};\n\nexport type TranscribeConfig = {\n /**\n * Number of chunks to transcribe automatically after.\n */\n transcribeAfterChunksAmount: number;\n\n /**\n * Number of chunks to save before the user starts speaking.\n * This is needed to catch the beginning of the user's speech.\n */\n prefixBufferChunksAmount: number;\n};\n\nexport type TranscriberParams = {\n config: TranscribeConfig;\n recorder: AudioRecorder;\n /**\n * Callback to handle the transcribed segments, after all segment transformers are applied.\n * @param segments - The transcribed segments.\n */\n onSegments: (segments: DataType.MessageBlock.Transcript[]) => Promise<void>;\n};\n\n/**\n * Handles transcription of audio chunks.\n * If user is not speaking, the last `minChunksAmount` chunks are saved and transcribed.\n * If user is speaking, the chunks are added to the buffer until the user is done talking.\n */\nexport class Transcriber extends Resource {\n private _audioChunks: AudioChunk[] = [];\n private _lastUsedTimestamp = 0;\n\n private readonly _openTrigger = new Trigger({ autoReset: true });\n\n private readonly _config: TranscribeConfig;\n private readonly _recorder: AudioRecorder;\n private readonly _onSegments: TranscriberParams['onSegments'];\n\n private _recording = false;\n private _transcribeTask?: DeferredTask = undefined;\n\n constructor({ config, recorder, onSegments }: TranscriberParams) {\n super();\n this._config = config;\n this._recorder = recorder;\n this._onSegments = onSegments;\n }\n\n protected override async _open(ctx: Context): Promise<void> {\n log.info('opening');\n this._recorder.setOnChunk((chunk) => this._saveAudioChunk(chunk));\n await this._recorder.start();\n this._transcribeTask = new DeferredTask(ctx, async () => this._transcribe());\n this._openTrigger.wake();\n }\n\n protected override async _close(): Promise<void> {\n log.info('closing');\n this._recording = false;\n this._transcribeTask = undefined;\n await this._recorder.stop();\n }\n\n startChunksRecording(): void {\n log.info('starting');\n if (this._lifecycleState !== LifecycleState.OPEN) {\n return;\n }\n\n this._recording = true;\n }\n\n stopChunksRecording(): void {\n if (this._lifecycleState !== LifecycleState.OPEN || !this._recording) {\n return;\n }\n\n this._recording = false;\n this._transcribeTask?.schedule();\n log.info('stopped');\n }\n\n private _saveAudioChunk(chunk: AudioChunk): void {\n log('saving audio chunk', { chunk });\n this._audioChunks.push(chunk);\n\n // Clean the buffer if the user is not speaking and the transcription task is not scheduled.\n if (\n !this._recording &&\n (!this._transcribeTask || !this._transcribeTask.scheduled) &&\n this._audioChunks.length >= this._config.prefixBufferChunksAmount\n ) {\n this._audioChunks = this._dropOldChunks();\n } else if (this._audioChunks.length >= this._config.transcribeAfterChunksAmount && this._recording) {\n this._transcribeTask?.schedule();\n }\n }\n\n private async _transcribe(): Promise<void> {\n log('transcribing', { chunks: this._audioChunks.length });\n const chunks = this._audioChunks;\n this._audioChunks = this._dropOldChunks();\n if (chunks.length === 0) {\n return;\n }\n\n const audio = await this._mergeAudioChunks(chunks);\n const segments = await this._fetchTranscription(audio);\n if (!Array.isArray(segments) || segments.length === 0) {\n return;\n }\n\n const alignedSegments = this._alignSegments(segments, chunks);\n if (alignedSegments.length > 0) {\n await this._onSegments(alignedSegments);\n }\n }\n\n private _dropOldChunks(): AudioChunk[] {\n return this._config.prefixBufferChunksAmount > 0\n ? this._audioChunks.slice(-this._config.prefixBufferChunksAmount)\n : [];\n }\n\n @trace.span({ showInBrowserTimeline: true })\n private async _mergeAudioChunks(chunks: AudioChunk[]): Promise<string> {\n const file = new WaveFile();\n const wavConfig = this._recorder.wavConfig;\n\n file.fromScratch(\n wavConfig.channels,\n wavConfig.sampleRate,\n wavConfig.bitDepthCode,\n mergeFloat64Arrays(chunks.map(({ data }) => data)),\n );\n\n return file.toBase64();\n }\n\n @trace.span({ showInBrowserTimeline: true })\n private async _fetchTranscription(audio: string): Promise<WhisperSegment[]> {\n if (audio.length === 0) {\n this._audioChunks = [];\n throw new Error('No audio to send for transcribing');\n }\n\n const response = await fetch(`${TRANSCRIPTION_URL}/transcribe`, {\n method: 'POST',\n body: JSON.stringify({ audio }),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n this._audioChunks = [];\n throw new Error(`Transcription failed: ${response.statusText}`);\n }\n\n const { segments } = (await response.json()) as {\n segments: WhisperSegment[];\n };\n\n log.info('transcription response', {\n segments: segments.length,\n string: segments.map((segments) => segments.text).join(' '),\n });\n\n return segments;\n }\n\n private _alignSegments(segments: WhisperSegment[], originalChunks: AudioChunk[]): DataType.MessageBlock.Transcript[] {\n // Absolute zero for all relative timestamps in the segments.\n const zeroTimestamp = originalChunks.at(0)!.timestamp;\n\n const filteredSegments = segments\n // Use segments that end after the last used timestamp.\n // Segments could overlap, so we need to filter words that starts after the last used timestamp.\n .filter((segment) => zeroTimestamp + segment.end * 1_000 >= this._lastUsedTimestamp)\n // Use words that starts after the last used timestamp.\n .map((segment) => {\n const words = segment.words.filter((word) => zeroTimestamp + word.start * 1_000 >= this._lastUsedTimestamp);\n return {\n ...segment,\n words,\n text: words.map((word) => word.word).join(''),\n start: words.at(0)?.start ?? segment.end,\n };\n })\n .filter((segment) => segment.words.length > 0);\n\n if (filteredSegments.length === 0) {\n return [];\n }\n\n // Update last timestamp.\n this._lastUsedTimestamp = zeroTimestamp + filteredSegments.at(-1)!.end * 1_000;\n\n // Add absolute timestamp to each segment.\n return filteredSegments.map((segment) => ({\n _tag: 'transcript',\n started: new Date(zeroTimestamp + segment.start * 1_000).toISOString(),\n text: segment.text.trim(),\n }));\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nexport const mergeFloat64Arrays = (arrays: Float64Array[]) => {\n const newArray = new Float64Array(arrays.reduce((acc, array) => array.length + acc, 0));\n let offset = 0;\n for (const array of arrays) {\n newArray.set(array, offset);\n offset += array.length;\n }\n\n return newArray;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { signal } from '@preact/signals-core';\n\nimport { synchronized } from '@dxos/async';\nimport { Resource } from '@dxos/context';\nimport { Obj } from '@dxos/echo';\nimport { type Queue } from '@dxos/echo-db';\nimport { type EdgeHttpClient } from '@dxos/react-edge-client';\nimport { DataType } from '@dxos/schema';\n\nimport { MediaStreamRecorder } from './media-stream-recorder';\nimport { Transcriber } from './transcriber';\n\n/**\n * Length of the chunk in ms.\n */\nconst RECORD_INTERVAL = 200;\n\n/**\n * Number of chunks to save before the user starts speaking.\n */\nconst PREFIXED_CHUNKS_AMOUNT = 10;\n\n/**\n * Number of chunks to transcribe automatically after.\n * Combined should be mess than 25MB or whisper would fail.\n */\nconst TRANSCRIBE_AFTER_CHUNKS_AMOUNT = 50;\n\nexport type TranscriptMessageEnricher = (message: DataType.Message) => Promise<DataType.Message>;\n\nexport type TranscriptionManagerOptions = {\n edgeClient: EdgeHttpClient;\n\n /**\n * Enrich the message before it is written to the transcription queue.\n */\n messageEnricher?: TranscriptMessageEnricher;\n};\n\n/**\n * Manages transcription state for a meeting.\n */\nexport class TranscriptionManager extends Resource {\n private readonly _edgeClient: EdgeHttpClient;\n private readonly _messageEnricher?: TranscriptMessageEnricher;\n private _audioStreamTrack?: MediaStreamTrack = undefined;\n private _identityDid?: string = undefined;\n private _mediaRecorder?: MediaStreamRecorder = undefined;\n private _transcriber?: Transcriber = undefined;\n private _queue?: Queue<DataType.Message> = undefined;\n private _enabled = signal(false);\n\n constructor(options: TranscriptionManagerOptions) {\n super();\n this._edgeClient = options.edgeClient;\n this._messageEnricher = options.messageEnricher;\n }\n\n /** @reactive */\n get enabled() {\n return this._enabled.value;\n }\n\n setQueue(queue: Queue<DataType.Message>): this {\n this._queue = queue;\n return this;\n }\n\n setIdentityDid(did: string): this {\n if (this._identityDid !== did) {\n this._identityDid = did;\n }\n return this;\n }\n\n setRecording(recording?: boolean): this {\n if (!this.isOpen || !this._enabled.value) {\n return this;\n }\n\n if (recording) {\n this._transcriber?.startChunksRecording();\n } else {\n this._transcriber?.stopChunksRecording();\n }\n return this;\n }\n\n /**\n * Enable or disable transcription.\n * @param enabled - Whether to enable transcription.\n */\n @synchronized\n async setEnabled(enabled?: boolean): Promise<void> {\n if (this._enabled.value === enabled) {\n return;\n }\n\n this._enabled.value = enabled ?? false;\n // TODO(burdon): Why is toggle called here?\n this.isOpen && (await this._toggleTranscriber());\n }\n\n @synchronized\n async setAudioTrack(track?: MediaStreamTrack): Promise<void> {\n if (this._audioStreamTrack === track) {\n return;\n }\n\n this._audioStreamTrack = track;\n this.isOpen && (await this._toggleTranscriber());\n }\n\n protected override async _open(): Promise<void> {\n await this._toggleTranscriber();\n }\n\n protected override async _close(): Promise<void> {\n void this._transcriber?.close();\n }\n\n // TODO(burdon): Change this to setEnables (explicit), not toggle.\n private async _toggleTranscriber(): Promise<void> {\n await this._maybeReinitTranscriber();\n\n // Open or close transcriber if transcription is enabled or disabled.\n if (this._enabled.value) {\n await this._transcriber?.open();\n // TODO(burdon): Started and stopped blocks appear twice.\n const block = Obj.make(DataType.Message, {\n created: new Date().toISOString(),\n blocks: [{ _tag: 'transcript', text: 'Started', started: new Date().toISOString() }],\n sender: { role: 'assistant' },\n });\n await this._queue?.append([block]);\n } else {\n await this._transcriber?.close();\n const block = Obj.make(DataType.Message, {\n created: new Date().toISOString(),\n blocks: [{ _tag: 'transcript', text: 'Stopped', started: new Date().toISOString() }],\n sender: { role: 'assistant' },\n });\n await this._queue?.append([block]);\n }\n }\n\n private async _maybeReinitTranscriber(): Promise<void> {\n if (!this._audioStreamTrack || !this._enabled.value) {\n return;\n }\n\n // Reinitialize transcriber if queue or media stream track has changed.\n let needReinit = false;\n if (this._audioStreamTrack !== this._mediaRecorder?.mediaStreamTrack) {\n this._mediaRecorder = new MediaStreamRecorder({\n mediaStreamTrack: this._audioStreamTrack,\n config: { interval: RECORD_INTERVAL },\n });\n needReinit = true;\n }\n if (needReinit) {\n await this._transcriber?.close();\n this._transcriber = new Transcriber({\n config: {\n transcribeAfterChunksAmount: TRANSCRIBE_AFTER_CHUNKS_AMOUNT,\n prefixBufferChunksAmount: PREFIXED_CHUNKS_AMOUNT,\n },\n recorder: this._mediaRecorder,\n onSegments: (segments) => this._onSegments(segments),\n });\n }\n }\n\n private async _onSegments(segments: DataType.MessageBlock.Transcript[]): Promise<void> {\n if (!this.isOpen || !this._queue) {\n return;\n }\n\n let block = Obj.make(DataType.Message, {\n created: new Date().toISOString(),\n blocks: segments,\n sender: { identityDid: this._identityDid },\n });\n\n if (this._messageEnricher) {\n block = await this._messageEnricher(block);\n }\n\n await this._queue.append([block]);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["MediaRecorder", "register", "WaveFile", "synchronized", "invariant", "log", "trace", "initializingPromise", "initializeExtendableMediaRecorder", "connect", "MediaStreamRecorder", "_mediaStreamTrack", "_config", "_mediaRecorder", "undefined", "_header", "_onChunk", "mediaStreamTrack", "config", "wavConfig", "settings", "getSettings", "channels", "channelCount", "sampleRate", "bitDepthCode", "sampleSize", "String", "setOnChunk", "onChunk", "start", "catch", "err", "info", "stream", "MediaStream", "mimeType", "state", "ondataavailable", "event", "_ondataavailable", "interval", "stop", "blob", "data", "uint8Array", "Uint8Array", "arrayBuffer", "isHeader", "wav", "slice", "warn", "timestamp", "Date", "now", "getSamples", "resource", "WaveFile", "DeferredTask", "Trigger", "LifecycleState", "Resource", "log", "trace", "mergeFloat64Arrays", "arrays", "newArray", "Float64Array", "reduce", "acc", "array", "length", "offset", "set", "Transcriber", "Resource", "_audioChunks", "_lastUsedTimestamp", "_openTrigger", "Trigger", "autoReset", "_config", "_recorder", "_onSegments", "_recording", "_transcribeTask", "undefined", "config", "recorder", "onSegments", "_open", "ctx", "log", "info", "setOnChunk", "chunk", "_saveAudioChunk", "start", "DeferredTask", "_transcribe", "wake", "_close", "stop", "startChunksRecording", "_lifecycleState", "LifecycleState", "OPEN", "stopChunksRecording", "schedule", "push", "scheduled", "length", "prefixBufferChunksAmount", "_dropOldChunks", "transcribeAfterChunksAmount", "chunks", "audio", "_mergeAudioChunks", "segments", "_fetchTranscription", "Array", "isArray", "alignedSegments", "_alignSegments", "slice", "file", "WaveFile", "wavConfig", "fromScratch", "channels", "sampleRate", "bitDepthCode", "mergeFloat64Arrays", "map", "data", "toBase64", "Error", "response", "fetch", "TRANSCRIPTION_URL", "method", "body", "JSON", "stringify", "headers", "ok", "statusText", "json", "string", "text", "join", "originalChunks", "zeroTimestamp", "at", "timestamp", "filteredSegments", "filter", "segment", "end", "words", "word", "_tag", "started", "Date", "toISOString", "trim", "span", "showInBrowserTimeline", "signal", "synchronized", "Resource", "Obj", "DataType", "RECORD_INTERVAL", "PREFIXED_CHUNKS_AMOUNT", "TRANSCRIBE_AFTER_CHUNKS_AMOUNT", "TranscriptionManager", "Resource", "_edgeClient", "_messageEnricher", "_audioStreamTrack", "undefined", "_identityDid", "_mediaRecorder", "_transcriber", "_queue", "_enabled", "signal", "options", "edgeClient", "messageEnricher", "enabled", "value", "setQueue", "queue", "setIdentityDid", "did", "setRecording", "recording", "isOpen", "startChunksRecording", "stopChunksRecording", "setEnabled", "_toggleTranscriber", "setAudioTrack", "track", "_open", "_close", "close", "_maybeReinitTranscriber", "open", "block", "Obj", "make", "DataType", "Message", "created", "Date", "toISOString", "blocks", "_tag", "text", "started", "sender", "role", "append", "needReinit", "mediaStreamTrack", "MediaStreamRecorder", "config", "interval", "Transcriber", "transcribeAfterChunksAmount", "prefixBufferChunksAmount", "recorder", "onSegments", "segments", "_onSegments", "identityDid"]
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Queue } from '@dxos/client/echo';\nimport { Type } from '@dxos/echo';\nimport { TypedObject } from '@dxos/echo-schema';\n\n/**\n * Root transcript object created when the user starts a transcription.\n */\nexport const TranscriptSchema = Schema.Struct({\n // TODO(wittjosiah): Remove?\n // TODO(burdon): Use Date or string?\n started: Schema.optional(Schema.String),\n ended: Schema.optional(Schema.String),\n\n /**\n * Queue containing TranscriptBlock objects.\n */\n queue: Type.Ref(Queue),\n});\n\nexport class TranscriptType extends TypedObject({\n typename: 'dxos.org/type/Transcript',\n version: '0.1.0',\n})(TranscriptSchema.fields) {}\n\n// TODO(burdon): Do these need to be kept in sync with EDGE?\n\n/**\n * First message in queue.\n * Contains metadata for the recording and transcript.\n */\nconst TranscriptHeader = Schema.Struct({\n started: Schema.optional(Schema.String),\n});\n\nexport type TranscriptHeader = Schema.Schema.Type<typeof TranscriptHeader>;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { SpaceId } from '@dxos/react-client/echo';\n\nimport {
|
|
5
|
-
"mappings": ";;;;;;AAIA,SAASA,cAAc;AAEvB,SAASC,aAAa;AACtB,SAASC,YAAY;AACrB,SAASC,mBAAmB;AAKrB,IAAMC,mBAAmBC,OAAOC,OAAO;;;EAG5CC,SAASF,OAAOG,SAASH,OAAOI,MAAM;EACtCC,OAAOL,OAAOG,SAASH,OAAOI,MAAM;;;;EAKpCE,OAAOC,KAAKC,IAAIC,KAAAA;AAClB,CAAA;AAEO,IAAMC,iBAAN,cAA6BC,YAAY;EAC9CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAGd,iBAAiBe,MAAM,EAAA;AAAG;AAQ7B,IAAMC,mBAAmBf,OAAOC,OAAO;EACrCC,SAASF,OAAOG,SAASH,OAAOI,MAAM;AACxC,CAAA;;;AClCA,SAASY,UAAAA,eAAc;AAEvB,SAASC,eAAe;
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Queue } from '@dxos/client/echo';\nimport { Type } from '@dxos/echo';\nimport { TypedObject } from '@dxos/echo-schema';\n\n/**\n * Root transcript object created when the user starts a transcription.\n */\nexport const TranscriptSchema = Schema.Struct({\n // TODO(wittjosiah): Remove?\n // TODO(burdon): Use Date or string?\n started: Schema.optional(Schema.String),\n ended: Schema.optional(Schema.String),\n\n /**\n * Queue containing TranscriptBlock objects.\n */\n queue: Type.Ref(Queue),\n});\n\nexport class TranscriptType extends TypedObject({\n typename: 'dxos.org/type/Transcript',\n version: '0.1.0',\n})(TranscriptSchema.fields) {}\n\n// TODO(burdon): Do these need to be kept in sync with EDGE?\n\n/**\n * First message in queue.\n * Contains metadata for the recording and transcript.\n */\nconst TranscriptHeader = Schema.Struct({\n started: Schema.optional(Schema.String),\n});\n\nexport type TranscriptHeader = Schema.Schema.Type<typeof TranscriptHeader>;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { SpaceId } from '@dxos/react-client/echo';\n\nimport { TRANSCRIPTION_PLUGIN } from '../meta';\n\nimport { TranscriptType } from './schema';\n\n// TODO(burdon): Move to separate proto.\n\n/**\n * Endpoint to the calls service.\n */\n// TODO(burdon): Reconfigure/move.\nexport const TRANSCRIPTION_URL = 'https://calls-service.dxos.workers.dev';\n\nexport namespace TranscriptionAction {\n const TRANSCRIPTION_ACTION = `${TRANSCRIPTION_PLUGIN}/action`;\n\n export class Create extends Schema.TaggedClass<Create>()(`${TRANSCRIPTION_ACTION}/create`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n spaceId: SpaceId,\n }),\n output: Schema.Struct({\n object: TranscriptType,\n }),\n }) {}\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,SAASA,cAAc;AAEvB,SAASC,aAAa;AACtB,SAASC,YAAY;AACrB,SAASC,mBAAmB;AAKrB,IAAMC,mBAAmBC,OAAOC,OAAO;;;EAG5CC,SAASF,OAAOG,SAASH,OAAOI,MAAM;EACtCC,OAAOL,OAAOG,SAASH,OAAOI,MAAM;;;;EAKpCE,OAAOC,KAAKC,IAAIC,KAAAA;AAClB,CAAA;AAEO,IAAMC,iBAAN,cAA6BC,YAAY;EAC9CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAGd,iBAAiBe,MAAM,EAAA;AAAG;AAQ7B,IAAMC,mBAAmBf,OAAOC,OAAO;EACrCC,SAASF,OAAOG,SAASH,OAAOI,MAAM;AACxC,CAAA;;;AClCA,SAASY,UAAAA,eAAc;AAEvB,SAASC,eAAe;AAYjB,IAAMC,oBAAoB;UAEhBC,sBAAAA;AACf,QAAMC,uBAAuB,GAAGC,oBAAAA;EAEzB,MAAMC,eAAeC,QAAOC,YAAW,EAAW,GAAGJ,oBAAAA,WAA+B;IACzFK,OAAOF,QAAOG,OAAO;MACnBC,MAAMJ,QAAOK,SAASL,QAAOM,MAAM;MACnCC,SAASC;IACX,CAAA;IACAC,QAAQT,QAAOG,OAAO;MACpBO,QAAQC;IACV,CAAA;EACF,CAAA,EAAA;EAAI;uBARSZ,SAAAA;AASf,GAZiBH,wBAAAA,sBAAAA,CAAAA,EAAAA;;",
|
|
6
6
|
"names": ["Schema", "Queue", "Type", "TypedObject", "TranscriptSchema", "Schema", "Struct", "started", "optional", "String", "ended", "queue", "Type", "Ref", "Queue", "TranscriptType", "TypedObject", "typename", "version", "fields", "TranscriptHeader", "Schema", "SpaceId", "TRANSCRIPTION_URL", "TranscriptionAction", "TRANSCRIPTION_ACTION", "TRANSCRIPTION_PLUGIN", "Create", "Schema", "TaggedClass", "input", "Struct", "name", "optional", "String", "spaceId", "SpaceId", "output", "object", "TranscriptType"]
|
|
7
7
|
}
|
|
@@ -2,9 +2,9 @@ import { createRequire } from 'node:module';const require = createRequire(import
|
|
|
2
2
|
|
|
3
3
|
// src/components/index.ts
|
|
4
4
|
import { lazy } from "react";
|
|
5
|
-
var TranscriptContainer = lazy(() => import("./TranscriptContainer-
|
|
5
|
+
var TranscriptContainer = lazy(() => import("./TranscriptContainer-GEUOOYHX.mjs"));
|
|
6
6
|
|
|
7
7
|
export {
|
|
8
8
|
TranscriptContainer
|
|
9
9
|
};
|
|
10
|
-
//# sourceMappingURL=chunk-
|
|
10
|
+
//# sourceMappingURL=chunk-PHP7MCAY.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/capabilities/capabilities.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineCapability } from '@dxos/app-framework';\n\nimport { TRANSCRIPTION_PLUGIN } from '../meta';\nimport {\n type
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineCapability } from '@dxos/app-framework';\n\nimport { TRANSCRIPTION_PLUGIN } from '../meta';\nimport {\n type MediaStreamRecorderParams,\n type Transcriber,\n type TranscriberParams,\n type TranscriptMessageEnricher,\n type TranscriptionManager,\n} from '../transcriber';\n\nexport namespace TranscriptionCapabilities {\n export type GetTranscriberProps = {\n audioStreamTrack: MediaStreamTrack;\n recorderConfig?: Partial<MediaStreamRecorderParams['config']>;\n transcriberConfig?: Partial<TranscriberParams['config']>;\n onSegments: TranscriberParams['onSegments'];\n };\n export type GetTranscriber = (props: GetTranscriberProps) => Transcriber;\n export const Transcriber = defineCapability<GetTranscriber>(`${TRANSCRIPTION_PLUGIN}/capability/transcriber`);\n\n export type GetTranscriptionManagerProps = {\n messageEnricher?: TranscriptMessageEnricher;\n };\n export type GetTranscriptionManager = (props: GetTranscriptionManagerProps) => TranscriptionManager;\n export const TranscriptionManager = defineCapability<GetTranscriptionManager>(\n `${TRANSCRIPTION_PLUGIN}/capability/transcription-manager`,\n );\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;AAIA,SAASA,wBAAwB;UAWhBC,4BAAAA;6BAQFC,cAAcC,iBAAiC,GAAGC,oBAAAA,yBAA6C;6BAM/FC,uBAAuBF,iBAClC,GAAGC,oBAAAA,mCAAuD;AAE9D,GAjBiBH,8BAAAA,4BAAAA,CAAAA,EAAAA;;",
|
|
6
6
|
"names": ["defineCapability", "TranscriptionCapabilities", "Transcriber", "defineCapability", "TRANSCRIPTION_PLUGIN", "TranscriptionManager"]
|
|
7
7
|
}
|