@dxos/plugin-transcription 0.8.2 → 0.8.3-main.672df60
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-PFKLKRPQ.mjs → TranscriptContainer-3EH6QHPJ.mjs} +2 -2
- package/dist/lib/browser/{chunk-IGEKO7ZU.mjs → chunk-DL2276CA.mjs} +2 -2
- package/dist/lib/browser/{chunk-4KCUYW2F.mjs → chunk-LMLE2QYX.mjs} +9 -22
- package/dist/lib/browser/{chunk-4KCUYW2F.mjs.map → chunk-LMLE2QYX.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-TJPJBE45.mjs → chunk-RULOUJHH.mjs} +3 -3
- package/dist/lib/browser/index.mjs +6 -8
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-ID2MLJHZ.mjs → react-surface-FPVBUAW4.mjs} +3 -3
- package/dist/lib/browser/{transcriber-NA7CIFIT.mjs → transcriber-KV5VJ6EZ.mjs} +2 -2
- package/dist/lib/node/{TranscriptContainer-LHMC7553.cjs → TranscriptContainer-JXOIM6N6.cjs} +7 -7
- package/dist/lib/node/{TranscriptContainer-LHMC7553.cjs.map → TranscriptContainer-JXOIM6N6.cjs.map} +2 -2
- package/dist/lib/node/{chunk-3GS5UNO5.cjs → chunk-CQSQI53U.cjs} +6 -6
- package/dist/lib/node/{chunk-5J3FBCON.cjs → chunk-IY6IM7GC.cjs} +5 -5
- package/dist/lib/node/{chunk-ZFTXJZXH.cjs → chunk-JABOFOJ5.cjs} +12 -25
- package/dist/lib/node/{chunk-ZFTXJZXH.cjs.map → chunk-JABOFOJ5.cjs.map} +3 -3
- package/dist/lib/node/index.cjs +21 -23
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-SEQLEL4K.cjs → react-surface-REQZMCYO.cjs} +7 -7
- package/dist/lib/node/{transcriber-RKKN7LDU.cjs → transcriber-ZSDN6GMP.cjs} +8 -8
- package/dist/lib/node-esm/{TranscriptContainer-DLNRFVTA.mjs → TranscriptContainer-K5VZZ4OB.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-EFIWBQDF.mjs → chunk-GD5IZDKD.mjs} +9 -22
- package/dist/lib/node-esm/{chunk-EFIWBQDF.mjs.map → chunk-GD5IZDKD.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-KUWWHMOA.mjs → chunk-SKK7VDQZ.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-PR7EYODX.mjs → chunk-V54MCG5P.mjs} +3 -3
- package/dist/lib/node-esm/index.mjs +6 -8
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-7MXUUTAL.mjs → react-surface-ROQN77NT.mjs} +3 -3
- package/dist/lib/node-esm/{transcriber-5WSI6DYK.mjs → transcriber-JHPFZVJJ.mjs} +2 -2
- package/dist/types/src/TranscriptionPlugin.d.ts.map +1 -1
- package/dist/types/src/transcriber/transcription-manager.d.ts +6 -6
- package/dist/types/src/transcriber/transcription-manager.d.ts.map +1 -1
- package/package.json +51 -51
- package/src/TranscriptionPlugin.tsx +3 -5
- package/src/transcriber/transcription-manager.ts +13 -18
- /package/dist/lib/browser/{TranscriptContainer-PFKLKRPQ.mjs.map → TranscriptContainer-3EH6QHPJ.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-IGEKO7ZU.mjs.map → chunk-DL2276CA.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-TJPJBE45.mjs.map → chunk-RULOUJHH.mjs.map} +0 -0
- /package/dist/lib/browser/{react-surface-ID2MLJHZ.mjs.map → react-surface-FPVBUAW4.mjs.map} +0 -0
- /package/dist/lib/browser/{transcriber-NA7CIFIT.mjs.map → transcriber-KV5VJ6EZ.mjs.map} +0 -0
- /package/dist/lib/node/{chunk-3GS5UNO5.cjs.map → chunk-CQSQI53U.cjs.map} +0 -0
- /package/dist/lib/node/{chunk-5J3FBCON.cjs.map → chunk-IY6IM7GC.cjs.map} +0 -0
- /package/dist/lib/node/{react-surface-SEQLEL4K.cjs.map → react-surface-REQZMCYO.cjs.map} +0 -0
- /package/dist/lib/node/{transcriber-RKKN7LDU.cjs.map → transcriber-ZSDN6GMP.cjs.map} +0 -0
- /package/dist/lib/node-esm/{TranscriptContainer-DLNRFVTA.mjs.map → TranscriptContainer-K5VZZ4OB.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-KUWWHMOA.mjs.map → chunk-SKK7VDQZ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-PR7EYODX.mjs.map → chunk-V54MCG5P.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-surface-7MXUUTAL.mjs.map → react-surface-ROQN77NT.mjs.map} +0 -0
- /package/dist/lib/node-esm/{transcriber-5WSI6DYK.mjs.map → transcriber-JHPFZVJJ.mjs.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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 WavConfig, type AudioChunk, type AudioRecorder } 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 { type AudioRecorder, type AudioChunk } from './audio-recorder';\nimport { TRANSCRIPTION_URL } from '../types';\nimport { mergeFloat64Arrays } from '../util';\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.Transcription[]) => 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(\n segments: WhisperSegment[],\n originalChunks: AudioChunk[],\n ): DataType.MessageBlock.Transcription[] {\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 type: 'transcription',\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 { QueueImpl, type Queue } from '@dxos/echo-db';\nimport { create } from '@dxos/echo-schema';\nimport { type DXN } from '@dxos/keys';\nimport { log } from '@dxos/log';\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 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 /** @reactive */\n get enabled() {\n return this._enabled.value;\n }\n\n setQueue(queueDxn: DXN): TranscriptionManager {\n if (this._queue?.dxn.toString() !== queueDxn.toString()) {\n log.info('setQueue', { queueDxn: queueDxn.toString() });\n this._queue = new QueueImpl<DataType.Message>(this._edgeClient, queueDxn);\n }\n return this;\n }\n\n setIdentityDid(did: string): TranscriptionManager {\n if (this._identityDid !== did) {\n this._identityDid = did;\n }\n return this;\n }\n\n setRecording(recording?: boolean): TranscriptionManager {\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 // 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 = create(DataType.Message, {\n created: new Date().toISOString(),\n blocks: [{ type: 'transcription', text: 'Started', started: new Date().toISOString() }],\n sender: { role: 'assistant' },\n });\n this._queue?.append([block]);\n } else {\n await this._transcriber?.close();\n const block = create(DataType.Message, {\n created: new Date().toISOString(),\n blocks: [{ type: 'transcription', text: 'Stopped', started: new Date().toISOString() }],\n sender: { role: 'assistant' },\n });\n 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.Transcription[]): Promise<void> {\n if (!this.isOpen || !this._queue) {\n return;\n }\n\n let block = create(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 this._queue.append([block]);\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,uCAA8E;AAC9E,sBAAyB;AAEzB,mBAA6B;AAC7B,uBAA0B;AAC1B,iBAAoB;AACpB,qBAAsB;ACNtB,IAAAA,mBAAyB;AAEzB,IAAAC,gBAAsC;AACtC,qBAAuD;AACvD,IAAAC,cAAoB;AAEpB,IAAAC,kBAAsB;AENtB,0BAAuB;AAEvB,IAAAF,gBAA6B;AAC7B,IAAAG,kBAAyB;
|
|
6
|
-
"names": ["import_wavefile", "import_async", "import_log", "import_tracing", "import_context", "initializingPromise", "initializeExtendableMediaRecorder", "connect", "register", "MediaStreamRecorder", "mediaStreamTrack", "config", "_mediaRecorder", "undefined", "_header", "_mediaStreamTrack", "_config", "wavConfig", "settings", "getSettings", "channels", "channelCount", "sampleRate", "bitDepthCode", "sampleSize", "String", "setOnChunk", "onChunk", "_onChunk", "start", "catch", "err", "log", "info", "stream", "MediaStream", "MediaRecorder", "mimeType", "state", "invariant", "ondataavailable", "event", "_ondataavailable", "interval", "stop", "blob", "data", "uint8Array", "Uint8Array", "arrayBuffer", "isHeader", "wav", "WaveFile", "slice", "warn", "timestamp", "Date", "now", "getSamples", "resource", "mergeFloat64Arrays", "arrays", "newArray", "Float64Array", "reduce", "acc", "array", "length", "offset", "set", "Transcriber", "Resource", "recorder", "onSegments", "_audioChunks", "_lastUsedTimestamp", "_openTrigger", "Trigger", "autoReset", "_recording", "_transcribeTask", "_recorder", "_onSegments", "_open", "ctx", "chunk", "_saveAudioChunk", "DeferredTask", "_transcribe", "wake", "_close", "startChunksRecording", "_lifecycleState", "LifecycleState", "OPEN", "stopChunksRecording", "schedule", "push", "scheduled", "prefixBufferChunksAmount", "_dropOldChunks", "transcribeAfterChunksAmount", "chunks", "audio", "_mergeAudioChunks", "segments", "_fetchTranscription", "Array", "isArray", "alignedSegments", "_alignSegments", "file", "fromScratch", "map", "toBase64", "Error", "response", "fetch", "TRANSCRIPTION_URL", "method", "body", "JSON", "stringify", "headers", "ok", "statusText", "json", "string", "text", "join", "originalChunks", "zeroTimestamp", "at", "filteredSegments", "filter", "segment", "end", "words", "word", "type", "started", "toISOString", "trim", "span", "showInBrowserTimeline", "RECORD_INTERVAL", "PREFIXED_CHUNKS_AMOUNT", "TRANSCRIBE_AFTER_CHUNKS_AMOUNT", "TranscriptionManager", "options", "_audioStreamTrack", "_identityDid", "_transcriber", "_queue", "_enabled", "signal", "_edgeClient", "edgeClient", "_messageEnricher", "messageEnricher", "
|
|
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 WavConfig, type AudioChunk, type AudioRecorder } 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 { type AudioRecorder, type AudioChunk } from './audio-recorder';\nimport { TRANSCRIPTION_URL } from '../types';\nimport { mergeFloat64Arrays } from '../util';\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.Transcription[]) => 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(\n segments: WhisperSegment[],\n originalChunks: AudioChunk[],\n ): DataType.MessageBlock.Transcription[] {\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 type: 'transcription',\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 { type Queue } from '@dxos/echo-db';\nimport { create } from '@dxos/echo-schema';\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 = create(DataType.Message, {\n created: new Date().toISOString(),\n blocks: [{ type: 'transcription', text: 'Started', started: new Date().toISOString() }],\n sender: { role: 'assistant' },\n });\n this._queue?.append([block]);\n } else {\n await this._transcriber?.close();\n const block = create(DataType.Message, {\n created: new Date().toISOString(),\n blocks: [{ type: 'transcription', text: 'Stopped', started: new Date().toISOString() }],\n sender: { role: 'assistant' },\n });\n 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.Transcription[]): Promise<void> {\n if (!this.isOpen || !this._queue) {\n return;\n }\n\n let block = create(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 this._queue.append([block]);\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,uCAA8E;AAC9E,sBAAyB;AAEzB,mBAA6B;AAC7B,uBAA0B;AAC1B,iBAAoB;AACpB,qBAAsB;ACNtB,IAAAA,mBAAyB;AAEzB,IAAAC,gBAAsC;AACtC,qBAAuD;AACvD,IAAAC,cAAoB;AAEpB,IAAAC,kBAAsB;AENtB,0BAAuB;AAEvB,IAAAF,gBAA6B;AAC7B,IAAAG,kBAAyB;AAEzB,yBAAuB;AAEvB,oBAAyB;;;;;;;;AHGzB,IAAIC;AAEJ,IAAMC,oCAAoC,YAAA;AACxC,QAAM,EAAEC,QAAO,IAAK,MAAM,OAAO,uCAAA;AACjC,YAAMC,2CAAS,MAAMD,QAAAA,CAAAA;AACvB;AAeO,IAAME,sBAAN,MAAMA;EAUX,YAAY,EAAEC,kBAAkBC,OAAM,GAA+B;AAJ7DC,SAAAA,iBAAkCC;AAClCC,SAAAA,UAAuBD;AAI7B,SAAKE,oBAAoBL;AACzB,SAAKM,UAAUL;EACjB;EAEA,IAAIM,YAAuB;AACzB,UAAMC,WAAW,KAAKH,kBAAkBI,YAAW;AACnD,WAAO;MACLC,UAAUF,SAASG,gBAAgB;MACnCC,YAAYJ,SAASI,cAAc;MACnCC,cAAcL,SAASM,aAAaC,OAAOP,SAASM,UAAU,IAAI;IACpE;EACF;EAEA,IAAId,mBAAmB;AACrB,WAAO,KAAKK;EACd;EAEAW,WAAWC,SAA4C;AACrD,SAAKC,WAAWD;EAClB;EAEA,MAAME,QAAuB;AAC3B,WAAOxB,wBAAwBC,kCAAAA,GAAqCwB,MAAM,CAACC,QACzEC,eAAIC,KAAK,qCAAqC;MAAEF;IAAI,GAAA;;;;;;AAGtD,QAAI,CAAC,KAAKnB,gBAAgB;AACxB,YAAMsB,SAAS,IAAIC,YAAY;QAAC,KAAKpB;OAAkB;AACvD,WAAKH,iBAAiB,IAAIwB,+CAAcF,QAAQ;QAAEG,UAAU;MAAY,CAAA;IAC1E;AAEA,QAAI,KAAKzB,eAAe0B,UAAU,aAAa;AAC7C;IACF;AACAC,oCAAU,KAAKX,UAAU,2CAAA;;;;;;;;;AACzB,SAAKhB,eAAe4B,kBAAkB,CAACC,UAAU,KAAKC,iBAAiBD,KAAAA;AACvE,SAAK7B,eAAeiB,MAAM,KAAKb,QAAQ2B,QAAQ;EACjD;EAEA,MAAMC,OAAsB;AAC1B,QAAI,KAAKhC,gBAAgB0B,UAAU,aAAa;AAC9C;IACF;AACA,SAAK1B,eAAegC,KAAI;EAC1B;EAEA,MACcF,iBAAiBD,OAAkC;AAC/D,UAAMI,OAAOJ,MAAMK;AACnB,UAAMC,aAAa,IAAIC,WAAW,MAAMH,KAAKI,YAAW,CAAA;AAGxD,UAAMC,WACJH,WAAW,CAAA,MAAO;IAClBA,WAAW,CAAA,MAAO;IAClBA,WAAW,CAAA,MAAO;IAClBA,WAAW,CAAA,MAAO;AACpB,QAAII;AAEJ,QAAID,UAAU;AACZC,YAAM,IAAIC,yBAASL,UAAAA;AACnB,WAAKjC,UAAUiC,WAAWM,MAAM,GAAG,EAAA;IACrC,WAAW,KAAKvC,SAAS;AACvBqC,YAAM,IAAIC,yBAAS,IAAIJ,WAAW;WAAI,KAAKlC;WAAYiC;OAAW,CAAA;IACpE,OAAO;AACLf,qBAAIsB,KAAK,kCAAA,QAAA;;;;;;AACT;IACF;AAEA,SAAK1B,SAAU;MACb2B,WAAWC,KAAKC,IAAG;MACnBX,MAAMK,IAAIO,WAAU;IACtB,CAAA;EACF;AACF;;;;;uBAtFOC,SAAAA;;AE7BA,IAAMC,qBAAqB,CAACC,WAAAA;AACjC,QAAMC,WAAW,IAAIC,aAAaF,OAAOG,OAAO,CAACC,KAAKC,UAAUA,MAAMC,SAASF,KAAK,CAAA,CAAA;AACpF,MAAIG,SAAS;AACb,aAAWF,SAASL,QAAQ;AAC1BC,aAASO,IAAIH,OAAOE,MAAAA;AACpBA,cAAUF,MAAMC;EAClB;AAEA,SAAOL;AACT;;;;;;;;ADkEO,IAAMQ,cAAN,cAA0BC,wBAAAA;EAa/B,YAAY,EAAE5D,QAAQ6D,UAAUC,WAAU,GAAuB;AAC/D,UAAK;AAbCC,SAAAA,eAA6B,CAAA;AAC7BC,SAAAA,qBAAqB;AAEZC,SAAAA,eAAe,IAAIC,sBAAQ;MAAEC,WAAW;IAAK,CAAA;AAMtDC,SAAAA,aAAa;AACbC,SAAAA,kBAAiCnE;AAIvC,SAAKG,UAAUL;AACf,SAAKsE,YAAYT;AACjB,SAAKU,cAAcT;EACrB;EAEA,MAAyBU,MAAMC,KAA6B;AAC1DpD,gBAAAA,IAAIC,KAAK,WAAA,QAAA;;;;;;AACT,SAAKgD,UAAUvD,WAAW,CAAC2D,UAAU,KAAKC,gBAAgBD,KAAAA,CAAAA;AAC1D,UAAM,KAAKJ,UAAUpD,MAAK;AAC1B,SAAKmD,kBAAkB,IAAIO,2BAAaH,KAAK,YAAY,KAAKI,YAAW,CAAA;AACzE,SAAKZ,aAAaa,KAAI;EACxB;EAEA,MAAyBC,SAAwB;AAC/C1D,gBAAAA,IAAIC,KAAK,WAAA,QAAA;;;;;;AACT,SAAK8C,aAAa;AAClB,SAAKC,kBAAkBnE;AACvB,UAAM,KAAKoE,UAAUrC,KAAI;EAC3B;EAEA+C,uBAA6B;AAC3B3D,gBAAAA,IAAIC,KAAK,YAAA,QAAA;;;;;;AACT,QAAI,KAAK2D,oBAAoBC,8BAAeC,MAAM;AAChD;IACF;AAEA,SAAKf,aAAa;EACpB;EAEAgB,sBAA4B;AAC1B,QAAI,KAAKH,oBAAoBC,8BAAeC,QAAQ,CAAC,KAAKf,YAAY;AACpE;IACF;AAEA,SAAKA,aAAa;AAClB,SAAKC,iBAAiBgB,SAAAA;AACtBhE,gBAAAA,IAAIC,KAAK,WAAA,QAAA;;;;;;EACX;EAEQqD,gBAAgBD,OAAyB;AAC/CrD,oBAAAA,KAAI,sBAAsB;MAAEqD;IAAM,GAAA;;;;;;AAClC,SAAKX,aAAauB,KAAKZ,KAAAA;AAGvB,QACE,CAAC,KAAKN,eACL,CAAC,KAAKC,mBAAmB,CAAC,KAAKA,gBAAgBkB,cAChD,KAAKxB,aAAaP,UAAU,KAAKnD,QAAQmF,0BACzC;AACA,WAAKzB,eAAe,KAAK0B,eAAc;IACzC,WAAW,KAAK1B,aAAaP,UAAU,KAAKnD,QAAQqF,+BAA+B,KAAKtB,YAAY;AAClG,WAAKC,iBAAiBgB,SAAAA;IACxB;EACF;EAEA,MAAcR,cAA6B;AACzCxD,oBAAAA,KAAI,gBAAgB;MAAEsE,QAAQ,KAAK5B,aAAaP;IAAO,GAAA;;;;;;AACvD,UAAMmC,SAAS,KAAK5B;AACpB,SAAKA,eAAe,KAAK0B,eAAc;AACvC,QAAIE,OAAOnC,WAAW,GAAG;AACvB;IACF;AAEA,UAAMoC,QAAQ,MAAM,KAAKC,kBAAkBF,MAAAA;AAC3C,UAAMG,WAAW,MAAM,KAAKC,oBAAoBH,KAAAA;AAChD,QAAI,CAACI,MAAMC,QAAQH,QAAAA,KAAaA,SAAStC,WAAW,GAAG;AACrD;IACF;AAEA,UAAM0C,kBAAkB,KAAKC,eAAeL,UAAUH,MAAAA;AACtD,QAAIO,gBAAgB1C,SAAS,GAAG;AAC9B,YAAM,KAAKe,YAAY2B,eAAAA;IACzB;EACF;EAEQT,iBAA+B;AACrC,WAAO,KAAKpF,QAAQmF,2BAA2B,IAC3C,KAAKzB,aAAarB,MAAM,CAAC,KAAKrC,QAAQmF,wBAAwB,IAC9D,CAAA;EACN;EAEA,MACcK,kBAAkBF,QAAuC;AACrE,UAAMS,OAAO,IAAI3D,iBAAAA,SAAAA;AACjB,UAAMnC,YAAY,KAAKgE,UAAUhE;AAEjC8F,SAAKC,YACH/F,UAAUG,UACVH,UAAUK,YACVL,UAAUM,cACVqC,mBAAmB0C,OAAOW,IAAI,CAAC,EAAEnE,KAAI,MAAOA,IAAAA,CAAAA,CAAAA;AAG9C,WAAOiE,KAAKG,SAAQ;EACtB;EAEA,MACcR,oBAAoBH,OAA0C;AAC1E,QAAIA,MAAMpC,WAAW,GAAG;AACtB,WAAKO,eAAe,CAAA;AACpB,YAAM,IAAIyC,MAAM,mCAAA;IAClB;AAEA,UAAMC,WAAW,MAAMC,MAAM,GAAGC,uCAAAA,eAAgC;MAC9DC,QAAQ;MACRC,MAAMC,KAAKC,UAAU;QAAEnB;MAAM,CAAA;MAC7BoB,SAAS;QACP,gBAAgB;MAClB;IACF,CAAA;AAEA,QAAI,CAACP,SAASQ,IAAI;AAChB,WAAKlD,eAAe,CAAA;AACpB,YAAM,IAAIyC,MAAM,yBAAyBC,SAASS,UAAU,EAAE;IAChE;AAEA,UAAM,EAAEpB,SAAQ,IAAM,MAAMW,SAASU,KAAI;AAIzC9F,gBAAAA,IAAIC,KAAK,0BAA0B;MACjCwE,UAAUA,SAAStC;MACnB4D,QAAQtB,SAASQ,IAAI,CAACR,cAAaA,UAASuB,IAAI,EAAEC,KAAK,GAAA;IACzD,GAAA;;;;;;AAEA,WAAOxB;EACT;EAEQK,eACNL,UACAyB,gBACuC;AAEvC,UAAMC,gBAAgBD,eAAeE,GAAG,CAAA,EAAI7E;AAE5C,UAAM8E,mBAAmB5B,SAGtB6B,OAAO,CAACC,YAAYJ,gBAAgBI,QAAQC,MAAM,OAAS,KAAK7D,kBAAkB,EAElFsC,IAAI,CAACsB,YAAAA;AACJ,YAAME,QAAQF,QAAQE,MAAMH,OAAO,CAACI,SAASP,gBAAgBO,KAAK7G,QAAQ,OAAS,KAAK8C,kBAAkB;AAC1G,aAAO;QACL,GAAG4D;QACHE;QACAT,MAAMS,MAAMxB,IAAI,CAACyB,SAASA,KAAKA,IAAI,EAAET,KAAK,EAAA;QAC1CpG,OAAO4G,MAAML,GAAG,CAAA,GAAIvG,SAAS0G,QAAQC;MACvC;IACF,CAAA,EACCF,OAAO,CAACC,YAAYA,QAAQE,MAAMtE,SAAS,CAAA;AAE9C,QAAIkE,iBAAiBlE,WAAW,GAAG;AACjC,aAAO,CAAA;IACT;AAGA,SAAKQ,qBAAqBwD,gBAAgBE,iBAAiBD,GAAG,EAAC,EAAII,MAAM;AAGzE,WAAOH,iBAAiBpB,IAAI,CAACsB,aAAa;MACxCI,MAAM;MACNC,SAAS,IAAIpF,KAAK2E,gBAAgBI,QAAQ1G,QAAQ,GAAA,EAAOgH,YAAW;MACpEb,MAAMO,QAAQP,KAAKc,KAAI;IACzB,EAAA;EACF;AACF;;wBApFSC,KAAAA;IAAOC,uBAAuB;;;;wBAe9BD,KAAAA;IAAOC,uBAAuB;;;;;;;;;AE3KvC,IAAMC,kBAAkB;AAKxB,IAAMC,yBAAyB;AAM/B,IAAMC,iCAAiC;AAgBhC,IAAMC,uBAAN,cAAmC7E,gBAAAA,SAAAA;EAUxC,YAAY8E,SAAsC;AAChD,UAAK;AARCC,SAAAA,oBAAuCzI;AACvC0I,SAAAA,eAAwB1I;AACxBD,SAAAA,iBAAuCC;AACvC2I,SAAAA,eAA6B3I;AAC7B4I,SAAAA,SAAmC5I;AACnC6I,SAAAA,eAAWC,4BAAO,KAAA;AAIxB,SAAKC,cAAcP,QAAQQ;AAC3B,SAAKC,mBAAmBT,QAAQU;EAClC;;EAGA,IAAIC,UAAU;AACZ,WAAO,KAAKN,SAASO;EACvB;EAEAC,SAASC,OAAsC;AAC7C,SAAKV,SAASU;AACd,WAAO;EACT;EAEAC,eAAeC,KAAmB;AAChC,QAAI,KAAKd,iBAAiBc,KAAK;AAC7B,WAAKd,eAAec;IACtB;AACA,WAAO;EACT;EAEAC,aAAaC,WAA2B;AACtC,QAAI,CAAC,KAAKC,UAAU,CAAC,KAAKd,SAASO,OAAO;AACxC,aAAO;IACT;AAEA,QAAIM,WAAW;AACb,WAAKf,cAAc7D,qBAAAA;IACrB,OAAO;AACL,WAAK6D,cAAczD,oBAAAA;IACrB;AACA,WAAO;EACT;;;;;EAMA,MACM0E,WAAWT,SAAkC;AACjD,QAAI,KAAKN,SAASO,UAAUD,SAAS;AACnC;IACF;AAEA,SAAKN,SAASO,QAAQD,WAAW;AAEjC,SAAKQ,UAAW,MAAM,KAAKE,mBAAkB;EAC/C;EAEA,MACMC,cAAcC,OAAyC;AAC3D,QAAI,KAAKtB,sBAAsBsB,OAAO;AACpC;IACF;AAEA,SAAKtB,oBAAoBsB;AACzB,SAAKJ,UAAW,MAAM,KAAKE,mBAAkB;EAC/C;EAEA,MAAyBvF,QAAuB;AAC9C,UAAM,KAAKuF,mBAAkB;EAC/B;EAEA,MAAyBhF,SAAwB;AAC/C,SAAK,KAAK8D,cAAcqB,MAAAA;EAC1B;;EAGA,MAAcH,qBAAoC;AAChD,UAAM,KAAKI,wBAAuB;AAGlC,QAAI,KAAKpB,SAASO,OAAO;AACvB,YAAM,KAAKT,cAAcuB,KAAAA;AAEzB,YAAMC,YAAQC,2BAAOC,uBAASC,SAAS;QACrCC,UAAS,oBAAI5H,KAAAA,GAAOqF,YAAW;QAC/BwC,QAAQ;UAAC;YAAE1C,MAAM;YAAiBX,MAAM;YAAWY,UAAS,oBAAIpF,KAAAA,GAAOqF,YAAW;UAAG;;QACrFyC,QAAQ;UAAEC,MAAM;QAAY;MAC9B,CAAA;AACA,WAAK9B,QAAQ+B,OAAO;QAACR;OAAM;IAC7B,OAAO;AACL,YAAM,KAAKxB,cAAcqB,MAAAA;AACzB,YAAMG,YAAQC,2BAAOC,uBAASC,SAAS;QACrCC,UAAS,oBAAI5H,KAAAA,GAAOqF,YAAW;QAC/BwC,QAAQ;UAAC;YAAE1C,MAAM;YAAiBX,MAAM;YAAWY,UAAS,oBAAIpF,KAAAA,GAAOqF,YAAW;UAAG;;QACrFyC,QAAQ;UAAEC,MAAM;QAAY;MAC9B,CAAA;AACA,WAAK9B,QAAQ+B,OAAO;QAACR;OAAM;IAC7B;EACF;EAEA,MAAcF,0BAAyC;AACrD,QAAI,CAAC,KAAKxB,qBAAqB,CAAC,KAAKI,SAASO,OAAO;AACnD;IACF;AAGA,QAAIwB,aAAa;AACjB,QAAI,KAAKnC,sBAAsB,KAAK1I,gBAAgBF,kBAAkB;AACpE,WAAKE,iBAAiB,IAAIH,oBAAoB;QAC5CC,kBAAkB,KAAK4I;QACvB3I,QAAQ;UAAEgC,UAAUsG;QAAgB;MACtC,CAAA;AACAwC,mBAAa;IACf;AACA,QAAIA,YAAY;AACd,YAAM,KAAKjC,cAAcqB,MAAAA;AACzB,WAAKrB,eAAe,IAAIlF,YAAY;QAClC3D,QAAQ;UACN0F,6BAA6B8C;UAC7BhD,0BAA0B+C;QAC5B;QACA1E,UAAU,KAAK5D;QACf6D,YAAY,CAACgC,aAAa,KAAKvB,YAAYuB,QAAAA;MAC7C,CAAA;IACF;EACF;EAEA,MAAcvB,YAAYuB,UAAgE;AACxF,QAAI,CAAC,KAAK+D,UAAU,CAAC,KAAKf,QAAQ;AAChC;IACF;AAEA,QAAIuB,YAAQC,2BAAOC,uBAASC,SAAS;MACnCC,UAAS,oBAAI5H,KAAAA,GAAOqF,YAAW;MAC/BwC,QAAQ5E;MACR6E,QAAQ;QAAEI,aAAa,KAAKnC;MAAa;IAC3C,CAAA;AAEA,QAAI,KAAKO,kBAAkB;AACzBkB,cAAQ,MAAM,KAAKlB,iBAAiBkB,KAAAA;IACtC;AAEA,SAAKvB,OAAO+B,OAAO;MAACR;KAAM;EAC5B;AACF;;;;;;;",
|
|
6
|
+
"names": ["import_wavefile", "import_async", "import_log", "import_tracing", "import_context", "initializingPromise", "initializeExtendableMediaRecorder", "connect", "register", "MediaStreamRecorder", "mediaStreamTrack", "config", "_mediaRecorder", "undefined", "_header", "_mediaStreamTrack", "_config", "wavConfig", "settings", "getSettings", "channels", "channelCount", "sampleRate", "bitDepthCode", "sampleSize", "String", "setOnChunk", "onChunk", "_onChunk", "start", "catch", "err", "log", "info", "stream", "MediaStream", "MediaRecorder", "mimeType", "state", "invariant", "ondataavailable", "event", "_ondataavailable", "interval", "stop", "blob", "data", "uint8Array", "Uint8Array", "arrayBuffer", "isHeader", "wav", "WaveFile", "slice", "warn", "timestamp", "Date", "now", "getSamples", "resource", "mergeFloat64Arrays", "arrays", "newArray", "Float64Array", "reduce", "acc", "array", "length", "offset", "set", "Transcriber", "Resource", "recorder", "onSegments", "_audioChunks", "_lastUsedTimestamp", "_openTrigger", "Trigger", "autoReset", "_recording", "_transcribeTask", "_recorder", "_onSegments", "_open", "ctx", "chunk", "_saveAudioChunk", "DeferredTask", "_transcribe", "wake", "_close", "startChunksRecording", "_lifecycleState", "LifecycleState", "OPEN", "stopChunksRecording", "schedule", "push", "scheduled", "prefixBufferChunksAmount", "_dropOldChunks", "transcribeAfterChunksAmount", "chunks", "audio", "_mergeAudioChunks", "segments", "_fetchTranscription", "Array", "isArray", "alignedSegments", "_alignSegments", "file", "fromScratch", "map", "toBase64", "Error", "response", "fetch", "TRANSCRIPTION_URL", "method", "body", "JSON", "stringify", "headers", "ok", "statusText", "json", "string", "text", "join", "originalChunks", "zeroTimestamp", "at", "filteredSegments", "filter", "segment", "end", "words", "word", "type", "started", "toISOString", "trim", "span", "showInBrowserTimeline", "RECORD_INTERVAL", "PREFIXED_CHUNKS_AMOUNT", "TRANSCRIBE_AFTER_CHUNKS_AMOUNT", "TranscriptionManager", "options", "_audioStreamTrack", "_identityDid", "_transcriber", "_queue", "_enabled", "signal", "_edgeClient", "edgeClient", "_messageEnricher", "messageEnricher", "enabled", "value", "setQueue", "queue", "setIdentityDid", "did", "setRecording", "recording", "isOpen", "setEnabled", "_toggleTranscriber", "setAudioTrack", "track", "close", "_maybeReinitTranscriber", "open", "block", "create", "DataType", "Message", "created", "blocks", "sender", "role", "append", "needReinit", "identityDid"]
|
|
7
7
|
}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -18,32 +18,31 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var node_exports = {};
|
|
20
20
|
__export(node_exports, {
|
|
21
|
-
MediaStreamRecorder: () =>
|
|
21
|
+
MediaStreamRecorder: () => import_chunk_JABOFOJ5.MediaStreamRecorder,
|
|
22
22
|
TRANSCRIPTION_PLUGIN: () => import_chunk_AFUZI63A.TRANSCRIPTION_PLUGIN,
|
|
23
|
-
Transcriber: () =>
|
|
24
|
-
Transcript: () =>
|
|
25
|
-
TranscriptContainer: () =>
|
|
23
|
+
Transcriber: () => import_chunk_JABOFOJ5.Transcriber,
|
|
24
|
+
Transcript: () => import_chunk_CQSQI53U.Transcript,
|
|
25
|
+
TranscriptContainer: () => import_chunk_IY6IM7GC.TranscriptContainer,
|
|
26
26
|
TranscriptionCapabilities: () => import_chunk_FKDJNJ57.TranscriptionCapabilities,
|
|
27
|
-
TranscriptionContainer: () =>
|
|
28
|
-
TranscriptionManager: () =>
|
|
27
|
+
TranscriptionContainer: () => import_chunk_CQSQI53U.TranscriptionContainer,
|
|
28
|
+
TranscriptionManager: () => import_chunk_JABOFOJ5.TranscriptionManager,
|
|
29
29
|
TranscriptionPlugin: () => TranscriptionPlugin,
|
|
30
30
|
meta: () => import_chunk_AFUZI63A.meta,
|
|
31
|
-
renderMarkdown: () =>
|
|
32
|
-
useAudioFile: () =>
|
|
33
|
-
useAudioTrack: () =>
|
|
34
|
-
useQueueModelAdapter: () =>
|
|
35
|
-
useTranscriber: () =>
|
|
36
|
-
useVoiceInput: () =>
|
|
31
|
+
renderMarkdown: () => import_chunk_CQSQI53U.renderMarkdown,
|
|
32
|
+
useAudioFile: () => import_chunk_CQSQI53U.useAudioFile,
|
|
33
|
+
useAudioTrack: () => import_chunk_CQSQI53U.useAudioTrack,
|
|
34
|
+
useQueueModelAdapter: () => import_chunk_CQSQI53U.useQueueModelAdapter,
|
|
35
|
+
useTranscriber: () => import_chunk_CQSQI53U.useTranscriber,
|
|
36
|
+
useVoiceInput: () => import_chunk_CQSQI53U.useVoiceInput
|
|
37
37
|
});
|
|
38
38
|
module.exports = __toCommonJS(node_exports);
|
|
39
|
-
var
|
|
40
|
-
var
|
|
41
|
-
var
|
|
39
|
+
var import_chunk_IY6IM7GC = require("./chunk-IY6IM7GC.cjs");
|
|
40
|
+
var import_chunk_CQSQI53U = require("./chunk-CQSQI53U.cjs");
|
|
41
|
+
var import_chunk_JABOFOJ5 = require("./chunk-JABOFOJ5.cjs");
|
|
42
42
|
var import_chunk_EIMUQYCZ = require("./chunk-EIMUQYCZ.cjs");
|
|
43
43
|
var import_chunk_FKDJNJ57 = require("./chunk-FKDJNJ57.cjs");
|
|
44
44
|
var import_chunk_AFUZI63A = require("./chunk-AFUZI63A.cjs");
|
|
45
45
|
var import_app_framework = require("@dxos/app-framework");
|
|
46
|
-
var import_echo_db = require("@dxos/echo-db");
|
|
47
46
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
48
47
|
var import_plugin_client = require("@dxos/plugin-client");
|
|
49
48
|
var import_echo = require("@dxos/react-client/echo");
|
|
@@ -81,12 +80,11 @@ var TranscriptionPlugin = () => (0, import_app_framework.definePlugin)(import_ch
|
|
|
81
80
|
icon: "ph--subtitles--regular",
|
|
82
81
|
// TODO(wittjosiah): Factor out. Artifact? Separate capability?
|
|
83
82
|
getTextContent: async (transcript) => {
|
|
84
|
-
const client = context.getCapability(import_plugin_client.ClientCapabilities.Client);
|
|
85
83
|
const space = (0, import_echo.getSpace)(transcript);
|
|
86
84
|
const members = space?.members.get().map((member) => member.identity) ?? [];
|
|
87
|
-
const queue =
|
|
88
|
-
await queue
|
|
89
|
-
const content = queue
|
|
85
|
+
const queue = space?.queues.get(transcript.queue.dxn);
|
|
86
|
+
await queue?.refresh();
|
|
87
|
+
const content = queue?.objects.filter((message) => (0, import_echo_schema.isInstanceOf)(import_schema.DataType.Message, message)).flatMap((message, index) => (0, import_chunk_CQSQI53U.renderMarkdown)(members)(message, index)).join("\n\n");
|
|
90
88
|
return content;
|
|
91
89
|
}
|
|
92
90
|
}
|
|
@@ -104,17 +102,17 @@ var TranscriptionPlugin = () => (0, import_app_framework.definePlugin)(import_ch
|
|
|
104
102
|
(0, import_app_framework.defineModule)({
|
|
105
103
|
id: `${import_chunk_AFUZI63A.meta.id}/module/react-surface`,
|
|
106
104
|
activatesOn: import_app_framework.Events.SetupReactSurface,
|
|
107
|
-
activate:
|
|
105
|
+
activate: import_chunk_CQSQI53U.ReactSurface
|
|
108
106
|
}),
|
|
109
107
|
(0, import_app_framework.defineModule)({
|
|
110
108
|
id: `${import_chunk_AFUZI63A.meta.id}/module/intent-resolver`,
|
|
111
109
|
activatesOn: import_app_framework.Events.SetupIntentResolver,
|
|
112
|
-
activate:
|
|
110
|
+
activate: import_chunk_CQSQI53U.IntentResolver
|
|
113
111
|
}),
|
|
114
112
|
(0, import_app_framework.defineModule)({
|
|
115
113
|
id: `${import_chunk_AFUZI63A.meta.id}/module/transcription`,
|
|
116
114
|
activatesOn: import_app_framework.Events.SetupAppGraph,
|
|
117
|
-
activate:
|
|
115
|
+
activate: import_chunk_CQSQI53U.Transcriber
|
|
118
116
|
})
|
|
119
117
|
]);
|
|
120
118
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/TranscriptionPlugin.tsx", "../../../src/translations.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, Events, contributes, defineModule, definePlugin } from '@dxos/app-framework';\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAA8E;AAC9E,
|
|
6
|
-
"names": ["TranscriptType", "typename", "TRANSCRIPTION_PLUGIN", "TranscriptionPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "SetupMetadata", "context", "Metadata", "metadata", "icon", "getTextContent", "transcript", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, Events, contributes, defineModule, definePlugin } from '@dxos/app-framework';\nimport { isInstanceOf } from '@dxos/echo-schema';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { DataType } from '@dxos/schema';\n\nimport { IntentResolver, ReactSurface, Transcriber } from './capabilities';\nimport { renderMarkdown } from './components';\nimport { meta } from './meta';\nimport translations from './translations';\nimport { TranscriptType } from './types';\n\nexport const TranscriptionPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: (context) =>\n contributes(Capabilities.Metadata, {\n id: TranscriptType.typename,\n metadata: {\n icon: 'ph--subtitles--regular',\n // TODO(wittjosiah): Factor out. Artifact? Separate capability?\n getTextContent: async (transcript: TranscriptType) => {\n const space = getSpace(transcript);\n const members = space?.members.get().map((member) => member.identity) ?? [];\n const queue = space?.queues.get<DataType.Message>(transcript.queue.dxn);\n await queue?.refresh();\n const content = queue?.objects\n .filter((message) => isInstanceOf(DataType.Message, message))\n .flatMap((message, index) => renderMarkdown(members)(message, index))\n .join('\\n\\n');\n return content;\n },\n },\n }),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => [contributes(ClientCapabilities.Schema, [TranscriptType])],\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/transcription`,\n activatesOn: Events.SetupAppGraph,\n activate: Transcriber,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { TRANSCRIPTION_PLUGIN } from './meta';\nimport { TranscriptType } from './types';\n\nexport default [\n {\n 'en-US': {\n [TranscriptType.typename]: {\n 'typename label': 'Transcript',\n 'object name placeholder': 'New transcript',\n },\n [TRANSCRIPTION_PLUGIN]: {\n 'plugin name': 'Transcription',\n 'transcript companion label': 'Transcript',\n\n 'delete button': 'Delete',\n 'bookmark button': 'Bookmark',\n 'scroll to end label': 'Scroll to latest',\n\n 'settings entity extraction label': 'Entity extraction',\n },\n },\n },\n];\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAA8E;AAC9E,yBAA6B;AAC7B,2BAAiD;AACjD,kBAAyB;AACzB,oBAAyB;ACDzB,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACA,qCAAeC,QAAQ,GAAG;QACzB,kBAAkB;QAClB,2BAA2B;MAC7B;MACA,CAACC,0CAAAA,GAAuB;QACtB,eAAe;QACf,8BAA8B;QAE9B,iBAAiB;QACjB,mBAAmB;QACnB,uBAAuB;QAEvB,oCAAoC;MACtC;IACF;EACF;;ADTK,IAAMC,sBAAsB,UACjCC,mCAAaC,4BAAM;MACjBC,mCAAa;IACXC,IAAI,GAAGF,2BAAKE,EAAE;IACdC,aAAaC,4BAAOC;IACpBC,UAAU,UAAMC,kCAAYC,kCAAaC,cAAcC,oBAAAA;EACzD,CAAA;MACAT,mCAAa;IACXC,IAAI,GAAGF,2BAAKE,EAAE;IACdC,aAAaC,4BAAOO;IACpBL,UAAU,CAACM,gBACTL,kCAAYC,kCAAaK,UAAU;MACjCX,IAAIP,qCAAeC;MACnBkB,UAAU;QACRC,MAAM;;QAENC,gBAAgB,OAAOC,eAAAA;AACrB,gBAAMC,YAAQC,sBAASF,UAAAA;AACvB,gBAAMG,UAAUF,OAAOE,QAAQC,IAAAA,EAAMC,IAAI,CAACC,WAAWA,OAAOC,QAAQ,KAAK,CAAA;AACzE,gBAAMC,QAAQP,OAAOQ,OAAOL,IAAsBJ,WAAWQ,MAAME,GAAG;AACtE,gBAAMF,OAAOG,QAAAA;AACb,gBAAMC,UAAUJ,OAAOK,QACpBC,OAAO,CAACC,gBAAYC,iCAAaC,uBAASC,SAASH,OAAAA,CAAAA,EACnDI,QAAQ,CAACJ,SAASK,cAAUC,sCAAelB,OAAAA,EAASY,SAASK,KAAAA,CAAAA,EAC7DE,KAAK,MAAA;AACR,iBAAOV;QACT;MACF;IACF,CAAA;EACJ,CAAA;MACA5B,mCAAa;IACXC,IAAI,GAAGF,2BAAKE,EAAE;IACdC,aAAaqC,kCAAaC;IAC1BnC,UAAU,MAAM;UAACC,kCAAYmC,wCAAmBC,QAAQ;QAAChD;OAAe;;EAC1E,CAAA;MACAM,mCAAa;IACXC,IAAI,GAAGF,2BAAKE,EAAE;IACdC,aAAaC,4BAAOwC;IACpBtC,UAAUuC;EACZ,CAAA;MACA5C,mCAAa;IACXC,IAAI,GAAGF,2BAAKE,EAAE;IACdC,aAAaC,4BAAO0C;IACpBxC,UAAUyC;EACZ,CAAA;MACA9C,mCAAa;IACXC,IAAI,GAAGF,2BAAKE,EAAE;IACdC,aAAaC,4BAAO4C;IACpB1C,UAAU2C,sBAAAA;EACZ,CAAA;CACD;",
|
|
6
|
+
"names": ["TranscriptType", "typename", "TRANSCRIPTION_PLUGIN", "TranscriptionPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "SetupMetadata", "context", "Metadata", "metadata", "icon", "getTextContent", "transcript", "space", "getSpace", "members", "get", "map", "member", "identity", "queue", "queues", "dxn", "refresh", "content", "objects", "filter", "message", "isInstanceOf", "DataType", "Message", "flatMap", "index", "renderMarkdown", "join", "ClientEvents", "SetupSchema", "ClientCapabilities", "Schema", "SetupReactSurface", "ReactSurface", "SetupIntentResolver", "IntentResolver", "SetupAppGraph", "Transcriber"]
|
|
7
7
|
}
|
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/plugins/plugin-transcription/src/meta.ts":{"bytes":1671,"imports":[],"format":"esm"},"packages/plugins/plugin-transcription/src/capabilities/capabilities.ts":{"bytes":2844,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-transcription/src/types/schema.ts":{"bytes":3537,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-transcription/src/types/types.ts":{"bytes":3240,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/types/schema.ts","kind":"import-statement","original":"./schema"},{"path":"packages/plugins/plugin-transcription/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-transcription/src/types/index.ts":{"bytes":562,"imports":[{"path":"packages/plugins/plugin-transcription/src/types/schema.ts","kind":"import-statement","original":"./schema"},{"path":"packages/plugins/plugin-transcription/src/types/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-transcription/src/capabilities/intent-resolver.ts":{"bytes":3026,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-transcription/src/model/model.ts":{"bytes":23748,"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"},"packages/plugins/plugin-transcription/src/model/index.ts":{"bytes":476,"imports":[{"path":"packages/plugins/plugin-transcription/src/model/model.ts","kind":"import-statement","original":"./model"}],"format":"esm"},"packages/plugins/plugin-transcription/src/components/Transcript/transcript-extension.ts":{"bytes":24561,"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":"packages/plugins/plugin-transcription/src/model/index.ts","kind":"import-statement","original":"../../model"}],"format":"esm"},"packages/plugins/plugin-transcription/src/components/Transcript/Transcript.tsx":{"bytes":11116,"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":"packages/plugins/plugin-transcription/src/components/Transcript/transcript-extension.ts","kind":"import-statement","original":"./transcript-extension"}],"format":"esm"},"packages/plugins/plugin-transcription/src/components/Transcript/index.ts":{"bytes":505,"imports":[{"path":"packages/plugins/plugin-transcription/src/components/Transcript/Transcript.tsx","kind":"import-statement","original":"./Transcript"}],"format":"esm"},"packages/plugins/plugin-transcription/src/hooks/useAudioFile.ts":{"bytes":10112,"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"},"packages/plugins/plugin-transcription/src/hooks/useAudioTrack.ts":{"bytes":3213,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-transcription/src/hooks/useQueueModelAdapter.ts":{"bytes":5517,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/model/index.ts","kind":"import-statement","original":"../model"}],"format":"esm"},"packages/plugins/plugin-transcription/src/hooks/useTranscriber.ts":{"bytes":3964,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/capabilities/index.ts","kind":"import-statement","original":"../capabilities"}],"format":"esm"},"packages/plugins/plugin-transcription/src/hooks/useVoiceInput.ts":{"bytes":7151,"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":"packages/plugins/plugin-transcription/src/hooks/useAudioTrack.ts","kind":"import-statement","original":"./useAudioTrack"},{"path":"packages/plugins/plugin-transcription/src/hooks/useTranscriber.ts","kind":"import-statement","original":"./useTranscriber"}],"format":"esm"},"packages/plugins/plugin-transcription/src/hooks/index.ts":{"bytes":923,"imports":[{"path":"packages/plugins/plugin-transcription/src/hooks/useAudioFile.ts","kind":"import-statement","original":"./useAudioFile"},{"path":"packages/plugins/plugin-transcription/src/hooks/useAudioTrack.ts","kind":"import-statement","original":"./useAudioTrack"},{"path":"packages/plugins/plugin-transcription/src/hooks/useQueueModelAdapter.ts","kind":"import-statement","original":"./useQueueModelAdapter"},{"path":"packages/plugins/plugin-transcription/src/hooks/useTranscriber.ts","kind":"import-statement","original":"./useTranscriber"},{"path":"packages/plugins/plugin-transcription/src/hooks/useVoiceInput.ts","kind":"import-statement","original":"./useVoiceInput"}],"format":"esm"},"packages/plugins/plugin-transcription/src/components/TranscriptContainer.tsx":{"bytes":4502,"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":"packages/plugins/plugin-transcription/src/components/Transcript/index.ts","kind":"import-statement","original":"./Transcript"},{"path":"packages/plugins/plugin-transcription/src/hooks/index.ts","kind":"import-statement","original":"../hooks"}],"format":"esm"},"packages/plugins/plugin-transcription/src/components/index.ts":{"bytes":1017,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/components/Transcript/index.ts","kind":"import-statement","original":"./Transcript"},{"path":"packages/plugins/plugin-transcription/src/components/TranscriptContainer.tsx","kind":"import-statement","original":"./TranscriptContainer"},{"path":"packages/plugins/plugin-transcription/src/components/TranscriptContainer.tsx","kind":"dynamic-import","original":"./TranscriptContainer"}],"format":"esm"},"packages/plugins/plugin-transcription/src/capabilities/react-surface.tsx":{"bytes":3054,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"packages/plugins/plugin-transcription/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-transcription/src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-transcription/src/transcriber/audio-recorder.ts":{"bytes":3191,"imports":[],"format":"esm"},"packages/plugins/plugin-transcription/src/transcriber/media-stream-recorder.ts":{"bytes":13353,"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"},"packages/plugins/plugin-transcription/src/util/array.ts":{"bytes":1543,"imports":[],"format":"esm"},"packages/plugins/plugin-transcription/src/util/get-time-str.ts":{"bytes":1301,"imports":[],"format":"esm"},"packages/plugins/plugin-transcription/src/util/monitor-audio-level.ts":{"bytes":5898,"imports":[],"format":"esm"},"packages/plugins/plugin-transcription/src/util/index.ts":{"bytes":694,"imports":[{"path":"packages/plugins/plugin-transcription/src/util/array.ts","kind":"import-statement","original":"./array"},{"path":"packages/plugins/plugin-transcription/src/util/get-time-str.ts","kind":"import-statement","original":"./get-time-str"},{"path":"packages/plugins/plugin-transcription/src/util/monitor-audio-level.ts","kind":"import-statement","original":"./monitor-audio-level"}],"format":"esm"},"packages/plugins/plugin-transcription/src/transcriber/transcriber.ts":{"bytes":25522,"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":"packages/plugins/plugin-transcription/src/types/index.ts","kind":"import-statement","original":"../types"},{"path":"packages/plugins/plugin-transcription/src/util/index.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/plugins/plugin-transcription/src/transcriber/transcription-manager.ts":{"bytes":20968,"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-db","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/transcriber/media-stream-recorder.ts","kind":"import-statement","original":"./media-stream-recorder"},{"path":"packages/plugins/plugin-transcription/src/transcriber/transcriber.ts","kind":"import-statement","original":"./transcriber"}],"format":"esm"},"packages/plugins/plugin-transcription/src/transcriber/index.ts":{"bytes":848,"imports":[{"path":"packages/plugins/plugin-transcription/src/transcriber/audio-recorder.ts","kind":"import-statement","original":"./audio-recorder"},{"path":"packages/plugins/plugin-transcription/src/transcriber/media-stream-recorder.ts","kind":"import-statement","original":"./media-stream-recorder"},{"path":"packages/plugins/plugin-transcription/src/transcriber/transcriber.ts","kind":"import-statement","original":"./transcriber"},{"path":"packages/plugins/plugin-transcription/src/transcriber/transcription-manager.ts","kind":"import-statement","original":"./transcription-manager"}],"format":"esm"},"packages/plugins/plugin-transcription/src/capabilities/transcriber.ts":{"bytes":7427,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-transcription/src/transcriber/index.ts","kind":"import-statement","original":"../transcriber"}],"format":"esm"},"packages/plugins/plugin-transcription/src/capabilities/index.ts":{"bytes":1394,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-transcription/src/capabilities/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"packages/plugins/plugin-transcription/src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"},{"path":"packages/plugins/plugin-transcription/src/capabilities/transcriber.ts","kind":"dynamic-import","original":"./transcriber"}],"format":"esm"},"packages/plugins/plugin-transcription/src/translations.ts":{"bytes":2375,"imports":[{"path":"packages/plugins/plugin-transcription/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-transcription/src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-transcription/src/TranscriptionPlugin.tsx":{"bytes":10041,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","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":"packages/plugins/plugin-transcription/src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-transcription/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-transcription/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-transcription/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/plugin-transcription/src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-transcription/src/index.ts":{"bytes":1082,"imports":[{"path":"packages/plugins/plugin-transcription/src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-transcription/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-transcription/src/hooks/index.ts","kind":"import-statement","original":"./hooks"},{"path":"packages/plugins/plugin-transcription/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-transcription/src/transcriber/index.ts","kind":"import-statement","original":"./transcriber"},{"path":"packages/plugins/plugin-transcription/src/TranscriptionPlugin.tsx","kind":"import-statement","original":"./TranscriptionPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-transcription/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6021},"packages/plugins/plugin-transcription/dist/lib/node/index.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-5J3FBCON.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-3GS5UNO5.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-ZFTXJZXH.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-FKDJNJ57.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","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":"packages/plugins/plugin-transcription/src/index.ts","inputs":{"packages/plugins/plugin-transcription/src/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-transcription/src/TranscriptionPlugin.tsx":{"bytesInOutput":2150},"packages/plugins/plugin-transcription/src/translations.ts":{"bytesInOutput":518}},"bytes":3848},"packages/plugins/plugin-transcription/dist/lib/node/types/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-transcription/dist/lib/node/types/index.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"}],"exports":["TRANSCRIPTION_URL","TranscriptSchema","TranscriptType","TranscriptionAction"],"entryPoint":"packages/plugins/plugin-transcription/src/types/index.ts","inputs":{},"bytes":282},"packages/plugins/plugin-transcription/dist/lib/node/intent-resolver-LLMGF5I5.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1586},"packages/plugins/plugin-transcription/dist/lib/node/intent-resolver-LLMGF5I5.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-transcription/src/capabilities/intent-resolver.ts","inputs":{"packages/plugins/plugin-transcription/src/capabilities/intent-resolver.ts":{"bytesInOutput":573}},"bytes":865},"packages/plugins/plugin-transcription/dist/lib/node/TranscriptContainer-LHMC7553.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-transcription/dist/lib/node/TranscriptContainer-LHMC7553.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-3GS5UNO5.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-FKDJNJ57.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"}],"exports":["TranscriptionContainer","default"],"entryPoint":"packages/plugins/plugin-transcription/src/components/TranscriptContainer.tsx","inputs":{},"bytes":295},"packages/plugins/plugin-transcription/dist/lib/node/react-surface-SEQLEL4K.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1476},"packages/plugins/plugin-transcription/dist/lib/node/react-surface-SEQLEL4K.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-5J3FBCON.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-3GS5UNO5.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-FKDJNJ57.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-transcription/src/capabilities/react-surface.tsx","inputs":{"packages/plugins/plugin-transcription/src/capabilities/react-surface.tsx":{"bytesInOutput":565}},"bytes":972},"packages/plugins/plugin-transcription/dist/lib/node/chunk-5J3FBCON.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":453},"packages/plugins/plugin-transcription/dist/lib/node/chunk-5J3FBCON.cjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/dist/lib/node/TranscriptContainer-LHMC7553.cjs","kind":"dynamic-import"}],"exports":["TranscriptContainer"],"inputs":{"packages/plugins/plugin-transcription/src/components/index.ts":{"bytesInOutput":114}},"bytes":258},"packages/plugins/plugin-transcription/dist/lib/node/chunk-3GS5UNO5.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":46668},"packages/plugins/plugin-transcription/dist/lib/node/chunk-3GS5UNO5.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-FKDJNJ57.cjs","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":"packages/plugins/plugin-transcription/dist/lib/node/intent-resolver-LLMGF5I5.cjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/react-surface-SEQLEL4K.cjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/transcriber-RKKN7LDU.cjs","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":{"packages/plugins/plugin-transcription/src/components/TranscriptContainer.tsx":{"bytesInOutput":1094},"packages/plugins/plugin-transcription/src/components/Transcript/Transcript.tsx":{"bytesInOutput":2474},"packages/plugins/plugin-transcription/src/components/Transcript/transcript-extension.ts":{"bytesInOutput":5452},"packages/plugins/plugin-transcription/src/model/model.ts":{"bytesInOutput":5036},"packages/plugins/plugin-transcription/src/model/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-transcription/src/components/Transcript/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-transcription/src/hooks/useAudioFile.ts":{"bytesInOutput":2719},"packages/plugins/plugin-transcription/src/hooks/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-transcription/src/hooks/useAudioTrack.ts":{"bytesInOutput":656},"packages/plugins/plugin-transcription/src/hooks/useQueueModelAdapter.ts":{"bytesInOutput":1075},"packages/plugins/plugin-transcription/src/hooks/useTranscriber.ts":{"bytesInOutput":804},"packages/plugins/plugin-transcription/src/capabilities/index.ts":{"bytesInOutput":258},"packages/plugins/plugin-transcription/src/hooks/useVoiceInput.ts":{"bytesInOutput":1882}},"bytes":22867},"packages/plugins/plugin-transcription/dist/lib/node/transcriber-RKKN7LDU.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3706},"packages/plugins/plugin-transcription/dist/lib/node/transcriber-RKKN7LDU.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-ZFTXJZXH.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-FKDJNJ57.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-transcription/src/capabilities/transcriber.ts","inputs":{"packages/plugins/plugin-transcription/src/capabilities/transcriber.ts":{"bytesInOutput":1381}},"bytes":1781},"packages/plugins/plugin-transcription/dist/lib/node/chunk-ZFTXJZXH.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":29571},"packages/plugins/plugin-transcription/dist/lib/node/chunk-ZFTXJZXH.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs","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-db","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["MediaStreamRecorder","Transcriber","TranscriptionManager"],"inputs":{"packages/plugins/plugin-transcription/src/transcriber/media-stream-recorder.ts":{"bytesInOutput":3747},"packages/plugins/plugin-transcription/src/transcriber/transcriber.ts":{"bytesInOutput":6164},"packages/plugins/plugin-transcription/src/util/array.ts":{"bytesInOutput":267},"packages/plugins/plugin-transcription/src/util/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-transcription/src/transcriber/transcription-manager.ts":{"bytesInOutput":5395},"packages/plugins/plugin-transcription/src/transcriber/index.ts":{"bytesInOutput":0}},"bytes":16123},"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3248},"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"},{"path":"effect","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":{"packages/plugins/plugin-transcription/src/types/schema.ts":{"bytesInOutput":649},"packages/plugins/plugin-transcription/src/types/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-transcription/src/types/types.ts":{"bytesInOutput":642}},"bytes":1615},"packages/plugins/plugin-transcription/dist/lib/node/chunk-FKDJNJ57.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1631},"packages/plugins/plugin-transcription/dist/lib/node/chunk-FKDJNJ57.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["TranscriptionCapabilities"],"inputs":{"packages/plugins/plugin-transcription/src/capabilities/capabilities.ts":{"bytesInOutput":435}},"bytes":658},"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":817},"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs":{"imports":[],"exports":["TRANSCRIPTION_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-transcription/src/meta.ts":{"bytesInOutput":337}},"bytes":478}}}
|
|
1
|
+
{"inputs":{"packages/plugins/plugin-transcription/src/meta.ts":{"bytes":1671,"imports":[],"format":"esm"},"packages/plugins/plugin-transcription/src/capabilities/capabilities.ts":{"bytes":2844,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-transcription/src/types/schema.ts":{"bytes":3537,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-transcription/src/types/types.ts":{"bytes":3240,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/types/schema.ts","kind":"import-statement","original":"./schema"},{"path":"packages/plugins/plugin-transcription/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-transcription/src/types/index.ts":{"bytes":562,"imports":[{"path":"packages/plugins/plugin-transcription/src/types/schema.ts","kind":"import-statement","original":"./schema"},{"path":"packages/plugins/plugin-transcription/src/types/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-transcription/src/capabilities/intent-resolver.ts":{"bytes":3026,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-transcription/src/model/model.ts":{"bytes":23748,"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"},"packages/plugins/plugin-transcription/src/model/index.ts":{"bytes":476,"imports":[{"path":"packages/plugins/plugin-transcription/src/model/model.ts","kind":"import-statement","original":"./model"}],"format":"esm"},"packages/plugins/plugin-transcription/src/components/Transcript/transcript-extension.ts":{"bytes":24561,"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":"packages/plugins/plugin-transcription/src/model/index.ts","kind":"import-statement","original":"../../model"}],"format":"esm"},"packages/plugins/plugin-transcription/src/components/Transcript/Transcript.tsx":{"bytes":11116,"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":"packages/plugins/plugin-transcription/src/components/Transcript/transcript-extension.ts","kind":"import-statement","original":"./transcript-extension"}],"format":"esm"},"packages/plugins/plugin-transcription/src/components/Transcript/index.ts":{"bytes":505,"imports":[{"path":"packages/plugins/plugin-transcription/src/components/Transcript/Transcript.tsx","kind":"import-statement","original":"./Transcript"}],"format":"esm"},"packages/plugins/plugin-transcription/src/hooks/useAudioFile.ts":{"bytes":10112,"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"},"packages/plugins/plugin-transcription/src/hooks/useAudioTrack.ts":{"bytes":3213,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-transcription/src/hooks/useQueueModelAdapter.ts":{"bytes":5517,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/model/index.ts","kind":"import-statement","original":"../model"}],"format":"esm"},"packages/plugins/plugin-transcription/src/hooks/useTranscriber.ts":{"bytes":3964,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/capabilities/index.ts","kind":"import-statement","original":"../capabilities"}],"format":"esm"},"packages/plugins/plugin-transcription/src/hooks/useVoiceInput.ts":{"bytes":7151,"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":"packages/plugins/plugin-transcription/src/hooks/useAudioTrack.ts","kind":"import-statement","original":"./useAudioTrack"},{"path":"packages/plugins/plugin-transcription/src/hooks/useTranscriber.ts","kind":"import-statement","original":"./useTranscriber"}],"format":"esm"},"packages/plugins/plugin-transcription/src/hooks/index.ts":{"bytes":923,"imports":[{"path":"packages/plugins/plugin-transcription/src/hooks/useAudioFile.ts","kind":"import-statement","original":"./useAudioFile"},{"path":"packages/plugins/plugin-transcription/src/hooks/useAudioTrack.ts","kind":"import-statement","original":"./useAudioTrack"},{"path":"packages/plugins/plugin-transcription/src/hooks/useQueueModelAdapter.ts","kind":"import-statement","original":"./useQueueModelAdapter"},{"path":"packages/plugins/plugin-transcription/src/hooks/useTranscriber.ts","kind":"import-statement","original":"./useTranscriber"},{"path":"packages/plugins/plugin-transcription/src/hooks/useVoiceInput.ts","kind":"import-statement","original":"./useVoiceInput"}],"format":"esm"},"packages/plugins/plugin-transcription/src/components/TranscriptContainer.tsx":{"bytes":4502,"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":"packages/plugins/plugin-transcription/src/components/Transcript/index.ts","kind":"import-statement","original":"./Transcript"},{"path":"packages/plugins/plugin-transcription/src/hooks/index.ts","kind":"import-statement","original":"../hooks"}],"format":"esm"},"packages/plugins/plugin-transcription/src/components/index.ts":{"bytes":1017,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/components/Transcript/index.ts","kind":"import-statement","original":"./Transcript"},{"path":"packages/plugins/plugin-transcription/src/components/TranscriptContainer.tsx","kind":"import-statement","original":"./TranscriptContainer"},{"path":"packages/plugins/plugin-transcription/src/components/TranscriptContainer.tsx","kind":"dynamic-import","original":"./TranscriptContainer"}],"format":"esm"},"packages/plugins/plugin-transcription/src/capabilities/react-surface.tsx":{"bytes":3054,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"packages/plugins/plugin-transcription/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-transcription/src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-transcription/src/transcriber/audio-recorder.ts":{"bytes":3191,"imports":[],"format":"esm"},"packages/plugins/plugin-transcription/src/transcriber/media-stream-recorder.ts":{"bytes":13353,"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"},"packages/plugins/plugin-transcription/src/util/array.ts":{"bytes":1543,"imports":[],"format":"esm"},"packages/plugins/plugin-transcription/src/util/get-time-str.ts":{"bytes":1301,"imports":[],"format":"esm"},"packages/plugins/plugin-transcription/src/util/monitor-audio-level.ts":{"bytes":5898,"imports":[],"format":"esm"},"packages/plugins/plugin-transcription/src/util/index.ts":{"bytes":694,"imports":[{"path":"packages/plugins/plugin-transcription/src/util/array.ts","kind":"import-statement","original":"./array"},{"path":"packages/plugins/plugin-transcription/src/util/get-time-str.ts","kind":"import-statement","original":"./get-time-str"},{"path":"packages/plugins/plugin-transcription/src/util/monitor-audio-level.ts","kind":"import-statement","original":"./monitor-audio-level"}],"format":"esm"},"packages/plugins/plugin-transcription/src/transcriber/transcriber.ts":{"bytes":25522,"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":"packages/plugins/plugin-transcription/src/types/index.ts","kind":"import-statement","original":"../types"},{"path":"packages/plugins/plugin-transcription/src/util/index.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/plugins/plugin-transcription/src/transcriber/transcription-manager.ts":{"bytes":19762,"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-schema","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/transcriber/media-stream-recorder.ts","kind":"import-statement","original":"./media-stream-recorder"},{"path":"packages/plugins/plugin-transcription/src/transcriber/transcriber.ts","kind":"import-statement","original":"./transcriber"}],"format":"esm"},"packages/plugins/plugin-transcription/src/transcriber/index.ts":{"bytes":848,"imports":[{"path":"packages/plugins/plugin-transcription/src/transcriber/audio-recorder.ts","kind":"import-statement","original":"./audio-recorder"},{"path":"packages/plugins/plugin-transcription/src/transcriber/media-stream-recorder.ts","kind":"import-statement","original":"./media-stream-recorder"},{"path":"packages/plugins/plugin-transcription/src/transcriber/transcriber.ts","kind":"import-statement","original":"./transcriber"},{"path":"packages/plugins/plugin-transcription/src/transcriber/transcription-manager.ts","kind":"import-statement","original":"./transcription-manager"}],"format":"esm"},"packages/plugins/plugin-transcription/src/capabilities/transcriber.ts":{"bytes":7427,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-transcription/src/transcriber/index.ts","kind":"import-statement","original":"../transcriber"}],"format":"esm"},"packages/plugins/plugin-transcription/src/capabilities/index.ts":{"bytes":1394,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-transcription/src/capabilities/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"packages/plugins/plugin-transcription/src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"},{"path":"packages/plugins/plugin-transcription/src/capabilities/transcriber.ts","kind":"dynamic-import","original":"./transcriber"}],"format":"esm"},"packages/plugins/plugin-transcription/src/translations.ts":{"bytes":2375,"imports":[{"path":"packages/plugins/plugin-transcription/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-transcription/src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-transcription/src/TranscriptionPlugin.tsx":{"bytes":9522,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","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":"packages/plugins/plugin-transcription/src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-transcription/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-transcription/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-transcription/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/plugin-transcription/src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-transcription/src/index.ts":{"bytes":1082,"imports":[{"path":"packages/plugins/plugin-transcription/src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-transcription/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-transcription/src/hooks/index.ts","kind":"import-statement","original":"./hooks"},{"path":"packages/plugins/plugin-transcription/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-transcription/src/transcriber/index.ts","kind":"import-statement","original":"./transcriber"},{"path":"packages/plugins/plugin-transcription/src/TranscriptionPlugin.tsx","kind":"import-statement","original":"./TranscriptionPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-transcription/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5780},"packages/plugins/plugin-transcription/dist/lib/node/index.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-IY6IM7GC.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-CQSQI53U.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-JABOFOJ5.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-FKDJNJ57.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","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":"packages/plugins/plugin-transcription/src/index.ts","inputs":{"packages/plugins/plugin-transcription/src/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-transcription/src/TranscriptionPlugin.tsx":{"bytesInOutput":2025},"packages/plugins/plugin-transcription/src/translations.ts":{"bytesInOutput":518}},"bytes":3723},"packages/plugins/plugin-transcription/dist/lib/node/types/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-transcription/dist/lib/node/types/index.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"}],"exports":["TRANSCRIPTION_URL","TranscriptSchema","TranscriptType","TranscriptionAction"],"entryPoint":"packages/plugins/plugin-transcription/src/types/index.ts","inputs":{},"bytes":282},"packages/plugins/plugin-transcription/dist/lib/node/intent-resolver-LLMGF5I5.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1586},"packages/plugins/plugin-transcription/dist/lib/node/intent-resolver-LLMGF5I5.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-transcription/src/capabilities/intent-resolver.ts","inputs":{"packages/plugins/plugin-transcription/src/capabilities/intent-resolver.ts":{"bytesInOutput":573}},"bytes":865},"packages/plugins/plugin-transcription/dist/lib/node/TranscriptContainer-JXOIM6N6.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-transcription/dist/lib/node/TranscriptContainer-JXOIM6N6.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-CQSQI53U.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-FKDJNJ57.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"}],"exports":["TranscriptionContainer","default"],"entryPoint":"packages/plugins/plugin-transcription/src/components/TranscriptContainer.tsx","inputs":{},"bytes":295},"packages/plugins/plugin-transcription/dist/lib/node/react-surface-REQZMCYO.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1476},"packages/plugins/plugin-transcription/dist/lib/node/react-surface-REQZMCYO.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-IY6IM7GC.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-CQSQI53U.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-FKDJNJ57.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-transcription/src/capabilities/react-surface.tsx","inputs":{"packages/plugins/plugin-transcription/src/capabilities/react-surface.tsx":{"bytesInOutput":565}},"bytes":972},"packages/plugins/plugin-transcription/dist/lib/node/chunk-IY6IM7GC.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":453},"packages/plugins/plugin-transcription/dist/lib/node/chunk-IY6IM7GC.cjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-transcription/dist/lib/node/TranscriptContainer-JXOIM6N6.cjs","kind":"dynamic-import"}],"exports":["TranscriptContainer"],"inputs":{"packages/plugins/plugin-transcription/src/components/index.ts":{"bytesInOutput":114}},"bytes":258},"packages/plugins/plugin-transcription/dist/lib/node/chunk-CQSQI53U.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":46668},"packages/plugins/plugin-transcription/dist/lib/node/chunk-CQSQI53U.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-FKDJNJ57.cjs","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":"packages/plugins/plugin-transcription/dist/lib/node/intent-resolver-LLMGF5I5.cjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/react-surface-REQZMCYO.cjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/transcriber-ZSDN6GMP.cjs","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":{"packages/plugins/plugin-transcription/src/components/TranscriptContainer.tsx":{"bytesInOutput":1094},"packages/plugins/plugin-transcription/src/components/Transcript/Transcript.tsx":{"bytesInOutput":2474},"packages/plugins/plugin-transcription/src/components/Transcript/transcript-extension.ts":{"bytesInOutput":5452},"packages/plugins/plugin-transcription/src/model/model.ts":{"bytesInOutput":5036},"packages/plugins/plugin-transcription/src/model/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-transcription/src/components/Transcript/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-transcription/src/hooks/useAudioFile.ts":{"bytesInOutput":2719},"packages/plugins/plugin-transcription/src/hooks/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-transcription/src/hooks/useAudioTrack.ts":{"bytesInOutput":656},"packages/plugins/plugin-transcription/src/hooks/useQueueModelAdapter.ts":{"bytesInOutput":1075},"packages/plugins/plugin-transcription/src/hooks/useTranscriber.ts":{"bytesInOutput":804},"packages/plugins/plugin-transcription/src/capabilities/index.ts":{"bytesInOutput":258},"packages/plugins/plugin-transcription/src/hooks/useVoiceInput.ts":{"bytesInOutput":1882}},"bytes":22867},"packages/plugins/plugin-transcription/dist/lib/node/transcriber-ZSDN6GMP.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3706},"packages/plugins/plugin-transcription/dist/lib/node/transcriber-ZSDN6GMP.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-JABOFOJ5.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-FKDJNJ57.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-transcription/src/capabilities/transcriber.ts","inputs":{"packages/plugins/plugin-transcription/src/capabilities/transcriber.ts":{"bytesInOutput":1381}},"bytes":1781},"packages/plugins/plugin-transcription/dist/lib/node/chunk-JABOFOJ5.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":28981},"packages/plugins/plugin-transcription/dist/lib/node/chunk-JABOFOJ5.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs","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-schema","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["MediaStreamRecorder","Transcriber","TranscriptionManager"],"inputs":{"packages/plugins/plugin-transcription/src/transcriber/media-stream-recorder.ts":{"bytesInOutput":3747},"packages/plugins/plugin-transcription/src/transcriber/transcriber.ts":{"bytesInOutput":6164},"packages/plugins/plugin-transcription/src/util/array.ts":{"bytesInOutput":267},"packages/plugins/plugin-transcription/src/util/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-transcription/src/transcriber/transcription-manager.ts":{"bytesInOutput":4895},"packages/plugins/plugin-transcription/src/transcriber/index.ts":{"bytesInOutput":0}},"bytes":15623},"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3248},"packages/plugins/plugin-transcription/dist/lib/node/chunk-EIMUQYCZ.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"},{"path":"effect","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":{"packages/plugins/plugin-transcription/src/types/schema.ts":{"bytesInOutput":649},"packages/plugins/plugin-transcription/src/types/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-transcription/src/types/types.ts":{"bytesInOutput":642}},"bytes":1615},"packages/plugins/plugin-transcription/dist/lib/node/chunk-FKDJNJ57.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1631},"packages/plugins/plugin-transcription/dist/lib/node/chunk-FKDJNJ57.cjs":{"imports":[{"path":"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["TranscriptionCapabilities"],"inputs":{"packages/plugins/plugin-transcription/src/capabilities/capabilities.ts":{"bytesInOutput":435}},"bytes":658},"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":817},"packages/plugins/plugin-transcription/dist/lib/node/chunk-AFUZI63A.cjs":{"imports":[],"exports":["TRANSCRIPTION_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-transcription/src/meta.ts":{"bytesInOutput":337}},"bytes":478}}}
|
|
@@ -26,13 +26,13 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var react_surface_REQZMCYO_exports = {};
|
|
30
|
+
__export(react_surface_REQZMCYO_exports, {
|
|
31
31
|
default: () => react_surface_default
|
|
32
32
|
});
|
|
33
|
-
module.exports = __toCommonJS(
|
|
34
|
-
var
|
|
35
|
-
var
|
|
33
|
+
module.exports = __toCommonJS(react_surface_REQZMCYO_exports);
|
|
34
|
+
var import_chunk_IY6IM7GC = require("./chunk-IY6IM7GC.cjs");
|
|
35
|
+
var import_chunk_CQSQI53U = require("./chunk-CQSQI53U.cjs");
|
|
36
36
|
var import_chunk_EIMUQYCZ = require("./chunk-EIMUQYCZ.cjs");
|
|
37
37
|
var import_chunk_FKDJNJ57 = require("./chunk-FKDJNJ57.cjs");
|
|
38
38
|
var import_chunk_AFUZI63A = require("./chunk-AFUZI63A.cjs");
|
|
@@ -47,10 +47,10 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
|
|
|
47
47
|
"section"
|
|
48
48
|
],
|
|
49
49
|
filter: (data) => (0, import_echo_schema.isInstanceOf)(import_chunk_EIMUQYCZ.TranscriptType, data.subject),
|
|
50
|
-
component: ({ data, role }) => /* @__PURE__ */ import_react.default.createElement(
|
|
50
|
+
component: ({ data, role }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_CQSQI53U.TranscriptionContainer, {
|
|
51
51
|
transcript: data.subject,
|
|
52
52
|
role
|
|
53
53
|
})
|
|
54
54
|
})
|
|
55
55
|
]);
|
|
56
|
-
//# sourceMappingURL=react-surface-
|
|
56
|
+
//# sourceMappingURL=react-surface-REQZMCYO.cjs.map
|