@dxos/plugin-transcription 0.8.4-main.f9ba587 → 0.8.4-main.fcc0d83b33
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/blueprints/index.mjs +31 -0
- package/dist/lib/browser/blueprints/index.mjs.map +7 -0
- package/dist/lib/browser/chunk-3L623EVL.mjs +17 -0
- package/dist/lib/browser/chunk-3L623EVL.mjs.map +7 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/chunk-KAEXRX3Y.mjs +35 -0
- package/dist/lib/browser/chunk-KAEXRX3Y.mjs.map +7 -0
- package/dist/lib/browser/chunk-L4HW35L6.mjs +111 -0
- package/dist/lib/browser/chunk-L4HW35L6.mjs.map +7 -0
- package/dist/lib/browser/create-ULR5DPJZ.mjs +21 -0
- package/dist/lib/browser/create-ULR5DPJZ.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1085 -98
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/open-SFMPLZVW.mjs +27 -0
- package/dist/lib/browser/open-SFMPLZVW.mjs.map +7 -0
- package/dist/lib/browser/operations/index.mjs +13 -0
- package/dist/lib/browser/operations/index.mjs.map +7 -0
- package/dist/lib/browser/summarize-I3POXUK3.mjs +79 -0
- package/dist/lib/browser/summarize-I3POXUK3.mjs.map +7 -0
- package/dist/lib/browser/translations.mjs +22 -0
- package/dist/lib/browser/translations.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +4 -8
- package/dist/lib/node-esm/blueprints/index.mjs +32 -0
- package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-7UIZWCD4.mjs +112 -0
- package/dist/lib/node-esm/chunk-7UIZWCD4.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-KO3IOD2O.mjs +19 -0
- package/dist/lib/node-esm/chunk-KO3IOD2O.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-O533NBMK.mjs +37 -0
- package/dist/lib/node-esm/chunk-O533NBMK.mjs.map +7 -0
- package/dist/lib/node-esm/create-A5QHNWRF.mjs +22 -0
- package/dist/lib/node-esm/create-A5QHNWRF.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +1085 -98
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/open-OI24QNTO.mjs +28 -0
- package/dist/lib/node-esm/open-OI24QNTO.mjs.map +7 -0
- package/dist/lib/node-esm/operations/index.mjs +14 -0
- package/dist/lib/node-esm/operations/index.mjs.map +7 -0
- package/dist/lib/node-esm/summarize-F3LLJ45P.mjs +80 -0
- package/dist/lib/node-esm/summarize-F3LLJ45P.mjs.map +7 -0
- package/dist/lib/node-esm/translations.mjs +23 -0
- package/dist/lib/node-esm/translations.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +4 -8
- package/dist/types/src/TranscriptionPlugin.d.ts +2 -1
- package/dist/types/src/TranscriptionPlugin.d.ts.map +1 -1
- package/dist/types/src/blueprints/index.d.ts +2 -0
- package/dist/types/src/blueprints/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/transcription-blueprint.d.ts +4 -0
- package/dist/types/src/blueprints/transcription-blueprint.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +6 -4
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
- package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts +3 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/transcriber.d.ts +4 -3
- package/dist/types/src/capabilities/transcriber.d.ts.map +1 -1
- package/dist/types/src/components/Transcription/Transcription.d.ts +18 -0
- package/dist/types/src/components/Transcription/Transcription.d.ts.map +1 -0
- package/dist/types/src/components/Transcription/Transcription.stories.d.ts +40 -0
- package/dist/types/src/components/Transcription/Transcription.stories.d.ts.map +1 -0
- package/dist/types/src/components/Transcription/index.d.ts +2 -0
- package/dist/types/src/components/Transcription/index.d.ts.map +1 -0
- package/dist/types/src/components/Transcription/transcription-extension.d.ts +15 -0
- package/dist/types/src/components/Transcription/transcription-extension.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +1 -3
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/TranscriptionContainer/TranscriptionContainer.d.ts +6 -0
- package/dist/types/src/containers/TranscriptionContainer/TranscriptionContainer.d.ts.map +1 -0
- package/dist/types/src/containers/TranscriptionContainer/index.d.ts +2 -0
- package/dist/types/src/containers/TranscriptionContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +3 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- package/dist/types/src/hooks/useAudioFile.d.ts.map +1 -1
- package/dist/types/src/hooks/useAudioTrack.d.ts.map +1 -1
- package/dist/types/src/hooks/useQueueModelAdapter.d.ts +1 -1
- package/dist/types/src/hooks/useQueueModelAdapter.d.ts.map +1 -1
- package/dist/types/src/hooks/useTranscriber.d.ts +2 -2
- package/dist/types/src/hooks/useTranscriber.d.ts.map +1 -1
- package/dist/types/src/hooks/useVoiceInput.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -3
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/model/model.d.ts +2 -2
- package/dist/types/src/model/model.d.ts.map +1 -1
- package/dist/types/src/{segments-normalization → normalization}/index.d.ts +1 -1
- package/dist/types/src/normalization/index.d.ts.map +1 -0
- package/dist/types/src/{segments-normalization → normalization}/message-normalizer.d.ts +5 -5
- package/dist/types/src/normalization/message-normalizer.d.ts.map +1 -0
- package/dist/types/src/normalization/normalization.d.ts +364 -0
- package/dist/types/src/normalization/normalization.d.ts.map +1 -0
- package/dist/types/src/normalization/normalization.test.d.ts.map +1 -0
- package/dist/types/src/normalization/utils.d.ts +3 -0
- package/dist/types/src/normalization/utils.d.ts.map +1 -0
- package/dist/types/src/operations/create.d.ts +5 -0
- package/dist/types/src/operations/create.d.ts.map +1 -0
- package/dist/types/src/operations/definitions.d.ts +917 -0
- package/dist/types/src/operations/definitions.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts +4 -0
- package/dist/types/src/operations/index.d.ts.map +1 -0
- package/dist/types/src/operations/open.d.ts +5 -0
- package/dist/types/src/operations/open.d.ts.map +1 -0
- package/dist/types/src/operations/summarize.d.ts +8 -0
- package/dist/types/src/operations/summarize.d.ts.map +1 -0
- package/dist/types/src/stories/FileTranscription.stories.d.ts +18 -0
- package/dist/types/src/stories/FileTranscription.stories.d.ts.map +1 -0
- package/dist/types/src/stories/KeyWordRecognition.stories.d.ts +14 -0
- package/dist/types/src/stories/KeyWordRecognition.stories.d.ts.map +1 -0
- package/dist/types/src/stories/MicrophoneTranscription.stories.d.ts +20 -0
- package/dist/types/src/stories/MicrophoneTranscription.stories.d.ts.map +1 -0
- package/dist/types/src/stories/TranscriptionStory.d.ts +23 -0
- package/dist/types/src/stories/TranscriptionStory.d.ts.map +1 -0
- package/dist/types/src/stories/useIsSpeaking.d.ts.map +1 -0
- package/dist/types/src/testing/testing.d.ts +10 -10
- package/dist/types/src/testing/testing.d.ts.map +1 -1
- package/dist/types/src/transcriber/media-stream-recorder.d.ts +3 -3
- package/dist/types/src/transcriber/media-stream-recorder.d.ts.map +1 -1
- package/dist/types/src/transcriber/transcriber.d.ts +60 -5
- package/dist/types/src/transcriber/transcriber.d.ts.map +1 -1
- package/dist/types/src/transcriber/transcriber.test.d.ts +2 -0
- package/dist/types/src/transcriber/transcriber.test.d.ts.map +1 -0
- package/dist/types/src/transcriber/transcription-manager.d.ts +12 -13
- package/dist/types/src/transcriber/transcription-manager.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +7 -8
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/capabilities.d.ts +19 -0
- package/dist/types/src/types/capabilities.d.ts.map +1 -0
- package/dist/types/src/types/defs.d.ts +5 -0
- package/dist/types/src/types/defs.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +2 -2
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/util/array.d.ts.map +1 -1
- package/dist/types/src/util/get-time-str.d.ts.map +1 -1
- package/dist/types/src/util/index.d.ts +1 -0
- package/dist/types/src/util/index.d.ts.map +1 -1
- package/dist/types/src/util/monitor-audio-level.d.ts.map +1 -1
- package/dist/types/src/util/render-byline.d.ts +4 -0
- package/dist/types/src/util/render-byline.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +108 -80
- package/src/TranscriptionPlugin.tsx +47 -60
- package/src/blueprints/index.ts +5 -0
- package/src/blueprints/transcription-blueprint.ts +29 -0
- package/src/capabilities/blueprint-definition.ts +17 -0
- package/src/capabilities/index.ts +9 -6
- package/src/capabilities/operation-handler.ts +16 -0
- package/src/capabilities/react-surface.tsx +23 -14
- package/src/capabilities/transcriber.ts +54 -42
- package/src/components/{Transcript/Transcript.stories.tsx → Transcription/Transcription.stories.tsx} +77 -72
- package/src/components/Transcription/Transcription.tsx +64 -0
- package/src/components/{Transcript → Transcription}/index.ts +1 -1
- package/src/components/{Transcript/transcript-extension.ts → Transcription/transcription-extension.ts} +15 -48
- package/src/components/index.ts +1 -6
- package/src/containers/TranscriptionContainer/TranscriptionContainer.tsx +35 -0
- package/src/containers/TranscriptionContainer/index.ts +5 -0
- package/src/containers/index.ts +7 -0
- package/src/hooks/useAudioFile.ts +49 -53
- package/src/hooks/useQueueModelAdapter.ts +1 -1
- package/src/hooks/useTranscriber.ts +12 -4
- package/src/hooks/useVoiceInput.ts +3 -3
- package/src/index.ts +1 -1
- package/src/meta.ts +9 -6
- package/src/model/model.test.ts +27 -21
- package/src/model/model.ts +3 -3
- package/src/{segments-normalization → normalization}/message-normalizer.ts +20 -19
- package/src/{segments-normalization → normalization}/normalization.test.ts +26 -33
- package/src/normalization/normalization.ts +77 -0
- package/src/{segments-normalization → normalization}/utils.ts +2 -2
- package/src/operations/create.ts +24 -0
- package/src/operations/definitions.ts +101 -0
- package/src/operations/index.ts +13 -0
- package/src/operations/open.ts +28 -0
- package/src/operations/summarize.ts +102 -0
- package/src/{components/stories → stories}/FileTranscription.stories.tsx +98 -71
- package/src/{components/stories → stories}/KeyWordRecognition.stories.tsx +46 -40
- package/src/{components/stories → stories}/MicrophoneTranscription.stories.tsx +84 -100
- package/src/stories/TranscriptionStory.tsx +93 -0
- package/src/testing/testing.ts +41 -41
- package/src/transcriber/media-stream-recorder.ts +4 -4
- package/src/transcriber/transcriber.browser.test.ts +5 -5
- package/src/transcriber/transcriber.test.ts +104 -0
- package/src/transcriber/transcriber.ts +101 -62
- package/src/transcriber/transcription-manager.ts +37 -52
- package/src/translations.ts +7 -7
- package/src/types/capabilities.ts +39 -0
- package/src/types/defs.ts +9 -0
- package/src/types/index.ts +2 -2
- package/src/util/index.ts +1 -0
- package/src/util/render-byline.ts +33 -0
- package/dist/lib/browser/TranscriptContainer-E5NBJPAY.mjs +0 -11
- package/dist/lib/browser/chunk-5WH45KBY.mjs +0 -19
- package/dist/lib/browser/chunk-5WH45KBY.mjs.map +0 -7
- package/dist/lib/browser/chunk-EQBICGOD.mjs +0 -8
- package/dist/lib/browser/chunk-EQBICGOD.mjs.map +0 -7
- package/dist/lib/browser/chunk-F2WY3YTD.mjs +0 -764
- package/dist/lib/browser/chunk-F2WY3YTD.mjs.map +0 -7
- package/dist/lib/browser/chunk-R7INNNUQ.mjs +0 -55
- package/dist/lib/browser/chunk-R7INNNUQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-U6QBOGTN.mjs +0 -16
- package/dist/lib/browser/chunk-U6QBOGTN.mjs.map +0 -7
- package/dist/lib/browser/chunk-VDKDOZRR.mjs +0 -495
- package/dist/lib/browser/chunk-VDKDOZRR.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-3O33MMP5.mjs +0 -30
- package/dist/lib/browser/intent-resolver-3O33MMP5.mjs.map +0 -7
- package/dist/lib/browser/react-surface-FJTMNF3K.mjs +0 -34
- package/dist/lib/browser/react-surface-FJTMNF3K.mjs.map +0 -7
- package/dist/lib/browser/transcriber-YVOTUBKQ.mjs +0 -56
- package/dist/lib/browser/transcriber-YVOTUBKQ.mjs.map +0 -7
- package/dist/lib/node-esm/TranscriptContainer-UOS7JG72.mjs +0 -12
- package/dist/lib/node-esm/chunk-DN522SAP.mjs +0 -10
- package/dist/lib/node-esm/chunk-DN522SAP.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HSCG4XPR.mjs +0 -496
- package/dist/lib/node-esm/chunk-HSCG4XPR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-Q3JKLPTW.mjs +0 -765
- package/dist/lib/node-esm/chunk-Q3JKLPTW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RHF2ALML.mjs +0 -17
- package/dist/lib/node-esm/chunk-RHF2ALML.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-U65ZWK3L.mjs +0 -56
- package/dist/lib/node-esm/chunk-U65ZWK3L.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XMUCZBP3.mjs +0 -21
- package/dist/lib/node-esm/chunk-XMUCZBP3.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-YMN5SXNC.mjs +0 -31
- package/dist/lib/node-esm/intent-resolver-YMN5SXNC.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-57TSIDR2.mjs +0 -35
- package/dist/lib/node-esm/react-surface-57TSIDR2.mjs.map +0 -7
- package/dist/lib/node-esm/transcriber-GPBV52ZR.mjs +0 -57
- package/dist/lib/node-esm/transcriber-GPBV52ZR.mjs.map +0 -7
- package/dist/types/src/capabilities/capabilities.d.ts +0 -17
- package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
- package/dist/types/src/components/Transcript/Transcript.d.ts +0 -20
- package/dist/types/src/components/Transcript/Transcript.d.ts.map +0 -1
- package/dist/types/src/components/Transcript/Transcript.stories.d.ts +0 -24
- package/dist/types/src/components/Transcript/Transcript.stories.d.ts.map +0 -1
- package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts +0 -28
- package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts.map +0 -1
- package/dist/types/src/components/Transcript/index.d.ts +0 -2
- package/dist/types/src/components/Transcript/index.d.ts.map +0 -1
- package/dist/types/src/components/Transcript/transcript-extension.d.ts +0 -19
- package/dist/types/src/components/Transcript/transcript-extension.d.ts.map +0 -1
- package/dist/types/src/components/TranscriptContainer.d.ts +0 -9
- package/dist/types/src/components/TranscriptContainer.d.ts.map +0 -1
- package/dist/types/src/components/stories/FileTranscription.stories.d.ts +0 -17
- package/dist/types/src/components/stories/FileTranscription.stories.d.ts.map +0 -1
- package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts +0 -10
- package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts.map +0 -1
- package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts +0 -19
- package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts.map +0 -1
- package/dist/types/src/components/stories/TranscriptionStory.d.ts +0 -11
- package/dist/types/src/components/stories/TranscriptionStory.d.ts.map +0 -1
- package/dist/types/src/components/stories/useIsSpeaking.d.ts.map +0 -1
- package/dist/types/src/segments-normalization/index.d.ts.map +0 -1
- package/dist/types/src/segments-normalization/message-normalizer.d.ts.map +0 -1
- package/dist/types/src/segments-normalization/normalization.d.ts +0 -329
- package/dist/types/src/segments-normalization/normalization.d.ts.map +0 -1
- package/dist/types/src/segments-normalization/normalization.test.d.ts.map +0 -1
- package/dist/types/src/segments-normalization/utils.d.ts +0 -3
- package/dist/types/src/segments-normalization/utils.d.ts.map +0 -1
- package/dist/types/src/types/schema.d.ts +0 -41
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/dist/types/src/types/types.d.ts +0 -31
- package/dist/types/src/types/types.d.ts.map +0 -1
- package/src/capabilities/capabilities.ts +0 -33
- package/src/capabilities/intent-resolver.ts +0 -24
- package/src/components/Transcript/Transcript.tsx +0 -100
- package/src/components/Transcript/deprecated/OldTranscript.tsx +0 -260
- package/src/components/TranscriptContainer.tsx +0 -35
- package/src/components/stories/TranscriptionStory.tsx +0 -41
- package/src/segments-normalization/normalization.ts +0 -106
- package/src/types/schema.ts +0 -41
- package/src/types/types.ts +0 -32
- package/dist/lib/browser/{TranscriptContainer-E5NBJPAY.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
- package/dist/lib/node-esm/{TranscriptContainer-UOS7JG72.mjs.map → chunk-HSLMI22Q.mjs.map} +0 -0
- package/dist/types/src/{segments-normalization → normalization}/normalization.test.d.ts +0 -0
- package/dist/types/src/{components/stories → stories}/useIsSpeaking.d.ts +0 -0
- package/src/{segments-normalization → normalization}/index.ts +1 -1
- /package/src/{components/stories → stories}/useIsSpeaking.tsx +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, Events, contributes, defineModule, definePlugin } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\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) => Obj.instanceOf(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 { type Resource } from '@dxos/react-ui';\n\nimport { meta } from './meta';\n\nexport const translations = [\n {\n 'en-US': {\n [meta.id]: {\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] as const satisfies Resource[];\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,cAAcC,QAAQC,aAAaC,cAAcC,oBAAoB;AAC9E,SAASC,WAAW;AACpB,SAASC,oBAAoBC,oBAAoB;AACjD,SAASC,gBAAgB;AACzB,SAASC,gBAAgB;;;ACAlB,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACC,KAAKC,EAAE,GAAG;QACT,eAAe;QACf,8BAA8B;QAE9B,iBAAiB;QACjB,mBAAmB;QACnB,uBAAuB;QAEvB,oCAAoC;MACtC;IACF;EACF;;;;ADNK,IAAMC,sBAAsB,MACjCC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,UAAU,MAAMC,YAAYC,aAAaC,cAAcC,YAAAA;EACzD,CAAA;EACAT,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOO;IACpBL,UAAU,CAACM,YACTL,YAAYC,aAAaK,UAAU;MACjCX,IAAIY,eAAeC;MACnBC,UAAU;QACRC,MAAM;;QAENC,gBAAgB,OAAOC,eAAAA;AACrB,gBAAMC,QAAQC,SAASF,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,YAAYC,IAAIC,WAAWC,SAASC,SAASJ,OAAAA,CAAAA,EACrDK,QAAQ,CAACL,SAASM,UAAUC,eAAenB,OAAAA,EAASY,SAASM,KAAAA,CAAAA,EAC7DE,KAAK,MAAA;AACR,iBAAOX;QACT;MACF;IACF,CAAA;EACJ,CAAA;EACA9B,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAawC,aAAaC;IAC1BtC,UAAU,MAAM;MAACC,YAAYsC,mBAAmBC,QAAQ;QAAChC;OAAe;;EAC1E,CAAA;EACAb,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAO2C;IACpBzC,UAAU0C;EACZ,CAAA;EACA/C,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAO6C;IACpB3C,UAAU4C;EACZ,CAAA;EACAjD,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAO+C;IACpB7C,UAAU8C;EACZ,CAAA;CACD;",
|
|
6
|
-
"names": ["
|
|
3
|
+
"sources": ["../../../src/components/Transcription/Transcription.tsx", "../../../src/components/Transcription/transcription-extension.ts", "../../../src/model/model.ts", "../../../src/hooks/useAudioFile.ts", "../../../src/hooks/useAudioTrack.ts", "../../../src/hooks/useQueueModelAdapter.ts", "../../../src/hooks/useTranscriber.ts", "../../../src/hooks/useVoiceInput.ts", "../../../src/meta.ts", "../../../src/transcriber/media-stream-recorder.ts", "../../../src/transcriber/transcriber.ts", "../../../src/transcriber/transcription-manager.ts", "../../../src/TranscriptionPlugin.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useThemeContext } from '@dxos/react-ui';\nimport { useTextEditor } from '@dxos/react-ui-editor';\nimport { type Message, type Transcript } from '@dxos/types';\nimport {\n autoScroll,\n createBasicExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n decorateMarkdown,\n documentSlots,\n preview,\n} from '@dxos/ui-editor';\nimport { composable, composableProps } from '@dxos/ui-theme';\nimport { isTruthy } from '@dxos/util';\n\nimport { type SerializationModel } from '../../model';\nimport { renderByline } from '../../util';\nimport { transcription } from './transcription-extension';\n\nexport { renderByline };\n\nexport type TranscriptionProps = {\n transcript?: Transcript.Transcript;\n model: SerializationModel<Message.Message>;\n // TODO(burdon): Are these still in use?\n attendableId?: string;\n ignoreAttention?: boolean;\n};\n\n/**\n * Transcript component implemented using the editor.\n */\nexport const Transcription = composable<HTMLDivElement, TranscriptionProps>(\n ({ transcript: object, model, children, ...props }, forwardedRef) => {\n const { themeMode } = useThemeContext();\n const { parentRef } = useTextEditor(() => {\n return {\n extensions: [\n createBasicExtensions({ readOnly: true, lineWrapping: true, search: true }),\n createMarkdownExtensions(),\n createThemeExtensions({ themeMode, slots: documentSlots }),\n decorateMarkdown(),\n preview(),\n transcription({ model, started: object?.started ? new Date(object.started) : undefined }),\n autoScroll(),\n ].filter(isTruthy),\n };\n }, [model]);\n\n return (\n <div\n {...composableProps(props, { classNames: 'dx-container' })}\n ref={parentRef}\n data-popover-collision-boundary={true /* TODO(thure): Make this a constant and document it. */}\n />\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, RangeSetBuilder } from '@codemirror/state';\nimport { EditorView, GutterMarker, ViewPlugin, type ViewUpdate, gutter } from '@codemirror/view';\nimport { format } from 'date-fns/format';\nimport { intervalToDuration } from 'date-fns/intervalToDuration';\n\nimport { type CleanupFn, addEventListener, combine } from '@dxos/async';\nimport { type Message } from '@dxos/types';\n\nimport { DocumentAdapter, type SerializationModel } from '../../model';\n\n/**\n * Data structure that maps Chunks queue to lines with transcript state.\n */\nexport type TranscriptionOptions = {\n model: SerializationModel<Message.Message>;\n started?: Date;\n};\n\n/**\n * Scrolling transcript with timestamps.\n */\nexport const transcription = ({ model, started }: TranscriptionOptions): Extension => {\n return [\n // Show timestamps in the gutter.\n gutter({\n class: 'cm-timestamp-gutter',\n lineMarkerChange: (update) => update.docChanged || update.viewportChanged,\n markers: (view) => {\n const start = getStartTime(started, model.chunks[0]);\n const builder = new RangeSetBuilder<GutterMarker>();\n for (const { from, to } of view.visibleRanges) {\n let line = view.state.doc.lineAt(from);\n while (line.from <= to) {\n const block = model.getChunkAtLine(line.number)?.blocks[0];\n const timestamp = block?._tag === 'transcript' && block.started;\n if (timestamp) {\n builder.add(line.from, line.from, new TimestampMarker(line.number, new Date(timestamp), start));\n }\n\n if (line.to + 1 > view.state.doc.length) {\n break;\n }\n\n line = view.state.doc.lineAt(line.to + 1);\n }\n }\n\n return builder.finish();\n },\n }),\n\n // Listen for model updates.\n ViewPlugin.fromClass(\n class {\n private readonly _controls?: HTMLDivElement;\n private readonly _cleanup: CleanupFn;\n private readonly _adapter: DocumentAdapter;\n private _initialized = false;\n\n constructor(view: EditorView) {\n this._adapter = new DocumentAdapter(view);\n\n const scroller = view.scrollDOM;\n let isAutoScrolling = false;\n let hasScrolled = false;\n\n let timeout: NodeJS.Timeout | undefined;\n const scrollToBottom = (smooth = false) => {\n scroller.style.scrollBehavior = smooth ? 'smooth' : '';\n\n // Temporarily hide scrollbar to prevent flicker.\n scroller.classList.add('cm-hide-scrollbar');\n isAutoScrolling = true;\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n this._controls?.classList.add('opacity-0');\n scroller.classList.remove('cm-hide-scrollbar');\n isAutoScrolling = false;\n }, 500);\n\n // Scroll to bottom.\n view.dispatch({\n effects: EditorView.scrollIntoView(view.state.doc.length, { y: 'end' }),\n });\n };\n\n // Event listeners.\n this._cleanup = combine(\n addEventListener(view.scrollDOM, 'scroll', () => {\n if (!isAutoScrolling) {\n hasScrolled = true;\n this._controls?.classList.remove('opacity-0');\n }\n }),\n\n model.update.on(() => {\n // Check if clamped to bottom.\n const autoScroll =\n scroller.scrollHeight - scroller.scrollTop - scroller.clientHeight === 0 || !hasScrolled;\n\n // Sync.\n model.sync(this._adapter);\n\n // Scroll.\n if (autoScroll) {\n scrollToBottom(true);\n }\n }),\n );\n }\n\n update(_update: ViewUpdate) {\n // Initial sync.\n if (!this._initialized) {\n this._initialized = true;\n setTimeout(() => {\n model.sync(this._adapter);\n });\n }\n }\n\n destroy() {\n this._controls?.remove();\n this._cleanup();\n }\n },\n ),\n\n EditorView.theme({\n '.cm-gutters': {\n backgroundColor: 'var(--color-base-surface)',\n },\n '.cm-timestamp-gutter': {\n width: '6rem',\n paddingLeft: '0.5rem',\n paddingRight: '1rem',\n },\n '.cm-timestamp-gutter > .cm-gutterElement > div': {\n display: 'inline-flex',\n textAlign: 'right',\n padding: '3px',\n },\n }),\n ];\n};\n\n/**\n * Gutter marker that displays a timestamp.\n */\nclass TimestampMarker extends GutterMarker {\n constructor(\n readonly _line: number,\n readonly _timestamp: Date,\n readonly _started?: Date,\n ) {\n super();\n }\n\n override eq(other: this) {\n return this._timestamp === other._timestamp;\n }\n\n override toDOM(view: EditorView) {\n const el = document.createElement('div');\n el.className = 'text-sm text-subdued hover:bg-hover-surface cursor-pointer';\n el.textContent = formatTimestamp(this._timestamp, this._started);\n // TODO(burdon): Click to bookmark or copy hyperlink.\n el.onclick = () => {\n const pos = view.state.doc.line(this._line).from;\n view.dispatch({\n effects: EditorView.scrollIntoView(pos, { y: 'start' }),\n });\n };\n\n return el;\n }\n}\n\nconst getStartTime = (started?: Date, message?: Message.Message): Date | undefined => {\n if (started) {\n return started;\n }\n\n if (message?.blocks[0]?._tag === 'transcript' && message.blocks[0].started) {\n return new Date(message.blocks[0].started);\n }\n\n return undefined;\n};\n\nconst formatTimestamp = (timestamp: Date, relative?: Date) => {\n if (relative) {\n const pad = (n = 0) => String(n).padStart(2, '0');\n const { hours, minutes, seconds } = intervalToDuration({ start: relative, end: timestamp });\n return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;\n } else {\n return format(timestamp, 'HH:mm:ss');\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Text } from '@codemirror/state';\nimport { type EditorView } from '@codemirror/view';\n\nimport { Event } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nexport type Chunk = { id: string };\n\n/**\n * Covert block to a set of markdown lines.\n */\nexport type ChunkRenderer<T extends Chunk> = (chunk: T, index: number, debug?: boolean) => string[];\n\n/**\n * Abstract representation of the document model.\n */\nexport interface ChunkDocument {\n lineCount(): number;\n replaceLines(from: number, remove: number, insert: string[]): void;\n}\n\n/**\n * Codemirror document adapter.\n */\nexport class DocumentAdapter implements ChunkDocument {\n constructor(private readonly _view: EditorView) {}\n\n /** The document must always have at least one line. */\n lineCount(): number {\n return this._view.state.doc.lines - 1;\n }\n\n replaceLines(from: number, remove: number, insert: string[]): void {\n log('replaceLines', { count: this._view.state.doc.lines, from, remove, insert });\n\n const numLines = this._view.state.doc.lines;\n const posFrom = this._view.state.doc.line(from).from;\n const posTo = remove === 0 ? posFrom : this._view.state.doc.line(Math.min(numLines, from + remove)).from;\n\n // Don't remove the last line.\n let text = insert.join('\\n');\n if (posTo === this._view.state.doc.length) {\n text += '\\n';\n }\n\n this._view.dispatch({\n changes: { from: posFrom, to: posTo, insert: text },\n });\n }\n}\n\ntype ChunkChange<T extends Chunk> =\n | {\n type: 'append';\n index: number;\n chunk: T;\n }\n | {\n type: 'update';\n index: number;\n chunk: T;\n }\n | {\n type: 'delete';\n index: number;\n id: string;\n };\n\n/**\n * Each Chunk can be converted into a set of lines.\n * Chunks can be added, updated or deleted from the Queue.\n * A Document is an immutable projection that represents a flat list of lines corresponding to the Queue.\n *\n * Ideally we would implement a custom virtual Text model for the View, but this currently isn't possible in Codemirror.\n * Instead this model tracks changes and syncs them with the ChunkDocument.\n */\nexport class SerializationModel<T extends Chunk> {\n /** Emits when the document is updated. */\n public readonly update = new Event<void>();\n\n /** Ordered set of chunks. */\n private readonly _chunks: T[] = [];\n\n /** Map of chunk IDs to their current line counts. */\n private readonly _chunkLineCounts = new Map<string, number>();\n\n /** Map of line numbers to chunk IDs. */\n private readonly _lineToChunk = new Map<number, T>();\n\n /** Track chunk changes since last sync. */\n private readonly _changes: Array<ChunkChange<T>> = [];\n\n constructor(\n private readonly _renderer: ChunkRenderer<T>,\n initialChunks: T[] = [],\n ) {\n initialChunks.forEach((chunk) => {\n this.appendChunk(chunk);\n });\n }\n\n toJSON(): { chunks: number; changes: number } {\n return {\n chunks: this._chunks.length,\n changes: this._changes.length,\n };\n }\n\n get doc() {\n return Text.of([...this._chunks.flatMap((chunk, index) => this._renderer(chunk, index)), '']);\n }\n\n get chunks() {\n return this._chunks;\n }\n\n /**\n * Get the block ID at the given line number.\n */\n getChunkAtLine(line: number): T | undefined {\n return this._lineToChunk.get(line);\n }\n\n reset(): this {\n this._chunks.length = 0;\n this._chunkLineCounts.clear();\n this._lineToChunk.clear();\n this.update.emit();\n return this;\n }\n\n appendChunk(chunk: T): this {\n const index = this._chunks.length;\n this._chunks.push(chunk);\n this._changes.push({ type: 'append', index, chunk });\n this.update.emit();\n return this;\n }\n\n updateChunk(chunk: T): this {\n const index = this._chunks.findIndex((c) => c.id === chunk.id);\n invariant(index !== -1);\n this._chunks[index] = chunk;\n this._changes.push({ type: 'update', index, chunk });\n this.update.emit();\n return this;\n }\n\n deleteBlock(id: string): this {\n const index = this._chunks.findIndex((c) => c.id === id);\n invariant(index !== -1);\n this._chunks.splice(index, 1);\n this._changes.push({ type: 'delete', index, id });\n this.update.emit();\n return this;\n }\n\n /**\n * Syncs the tracked changes with the ChunkDocument.\n */\n sync(document: ChunkDocument): this {\n log('sync', { changes: this._changes });\n\n // Process each change in order.\n for (const change of this._changes) {\n switch (change.type) {\n case 'append': {\n // For appends, convert block to lines and add at the end.\n const lines = this._renderer(change.chunk, change.index);\n const lastLine = document.lineCount();\n document.replaceLines(lastLine + 1, 0, lines);\n break;\n }\n\n case 'update': {\n // For updates, find the block's line range and replace with new lines.\n let lineStart = 1;\n for (let i = 0; i < change.index; i++) {\n lineStart += this._chunkLineCounts.get(this._chunks[i].id)!;\n }\n const previousLineCount = this._chunkLineCounts.get(change.chunk.id)!;\n const newLines = this._renderer(change.chunk, change.index);\n document.replaceLines(lineStart, previousLineCount, newLines);\n break;\n }\n\n case 'delete': {\n // For deletes, find the block's line range and remove those lines.\n let lineStart = 1;\n for (let i = 0; i < change.index; i++) {\n lineStart += this._chunkLineCounts.get(this._chunks[i].id)!;\n }\n const previousLineCount = this._chunkLineCounts.get(change.id)!;\n document.replaceLines(lineStart, previousLineCount, []);\n break;\n }\n }\n }\n\n // Clear the line-to-block mapping.\n this._lineToChunk.clear();\n\n // Update all block line counts and line-to-block mapping after processing changes.\n let currentLine = 1;\n for (const [index, chunk] of this._chunks.entries()) {\n const lineCount = this._renderer(chunk, index).length;\n this._chunkLineCounts.set(chunk.id, lineCount);\n this._lineToChunk.set(currentLine, chunk);\n currentLine += lineCount;\n }\n\n // Clean up deleted blocks.\n const chunkIds = new Set(this._chunks.map((chunk) => chunk.id));\n for (const id of this._chunkLineCounts.keys()) {\n if (!chunkIds.has(id)) {\n this._chunkLineCounts.delete(id);\n }\n }\n\n // Clear changes after sync.\n this._changes.length = 0;\n return this;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { scheduleTask } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { log } from '@dxos/log';\n\nexport type UseAudioState = {\n audio?: HTMLAudioElement;\n stream?: MediaStream;\n track?: MediaStreamTrack;\n};\n\nexport const useAudioFile = (audioUrl: string, constraints?: MediaTrackConstraints): UseAudioState => {\n const [{ audio, stream, track }, setStream] = useState<UseAudioState>({});\n useEffect(() => {\n const ctx = new Context();\n\n scheduleTask(ctx, async () => {\n // TODO(wittjosiah): Fetch to external url fails in headless storybook test.\n try {\n const response = await fetch(audioUrl);\n const blob = await response.blob();\n const objectUrl = URL.createObjectURL(blob);\n ctx.onDispose(() => {\n URL.revokeObjectURL(objectUrl);\n });\n\n const audio = new Audio();\n audio.src = objectUrl;\n\n await new Promise<void>((resolve, reject) => {\n audio.addEventListener(\n 'error',\n (err) => {\n log.error('error', { err });\n reject(err);\n },\n { once: true },\n );\n audio.addEventListener(\n 'canplay',\n async () => {\n resolve();\n },\n { once: true },\n );\n audio.load();\n });\n\n const audioCtx = new AudioContext();\n\n // Resume AudioContext if it's suspended.\n if (audioCtx.state === 'suspended') {\n await audioCtx.resume();\n }\n\n const destination = audioCtx.createMediaStreamDestination();\n destination.channelCount = 1;\n\n const source = audioCtx.createMediaElementSource(audio);\n source.connect(destination);\n const track = destination.stream.getAudioTracks()[0];\n if (constraints) {\n await track.applyConstraints(constraints).catch((err) => log.catch(err));\n }\n\n // Also connect to speakers so audio is audible.\n setStream({\n audio,\n stream: destination.stream,\n track: destination.stream.getAudioTracks()[0],\n });\n } catch (err) {\n log.catch(err);\n }\n });\n\n return () => {\n void ctx.dispose();\n };\n }, [audioUrl]);\n\n return { audio, stream, track };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\n/**\n *\n */\n// TODO(burdon): Reconcile with react-ui-sfx and plugin-calls.\nexport const useAudioTrack = (active?: boolean, constraints?: MediaTrackConstraints): MediaStreamTrack | undefined => {\n const [track, setTrack] = useState<MediaStreamTrack>();\n useEffect(() => {\n if (!active) {\n track?.stop();\n setTrack(undefined);\n return;\n }\n\n const initAudio = async () => {\n const audio = new Audio();\n audio.srcObject = await navigator.mediaDevices.getUserMedia({ audio: constraints ?? true });\n const [track] = audio.srcObject.getAudioTracks();\n if (track) {\n setTrack(track);\n }\n };\n\n if (active) {\n void initAudio();\n }\n }, [active]);\n\n return track;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo, useState } from 'react';\n\nimport type { Obj } from '@dxos/echo';\nimport { type Queue } from '@dxos/react-client/echo';\n\nimport { type ChunkRenderer, SerializationModel } from '../model';\n\n/**\n * Model adapter for a queue.\n */\nexport const useQueueModelAdapter = <T extends Obj.Unknown>(\n renderer: ChunkRenderer<T>,\n queue: Queue<T> | undefined,\n initialChunks: T[] = [],\n): SerializationModel<T> => {\n const model = useMemo(() => new SerializationModel<T>(renderer, initialChunks), [queue]);\n const [loaded, setLoaded] = useState(false);\n\n // Set initial blocks.\n useEffect(() => {\n if (!queue) {\n return;\n }\n\n const update = () => {\n for (const block of queue?.objects ?? []) {\n model.appendChunk(block);\n }\n\n setLoaded(true);\n };\n\n // TODO(burdon): This is a hack to ensure the queue is loaded.\n let i: NodeJS.Timeout | undefined;\n if (queue.isLoading) {\n i = setInterval(() => {\n if (!queue?.isLoading) {\n clearInterval(i);\n update();\n }\n }, 1_000);\n } else {\n update();\n }\n\n return () => clearTimeout(i);\n }, [model, queue]);\n\n // TODO(burdon): Can we listen for queue events?\n useEffect(() => {\n if (!loaded || !queue || model.chunks.length === queue.objects.length) {\n return;\n }\n\n const chunk = queue.objects.at(-1);\n if (chunk) {\n model.appendChunk(chunk);\n }\n }, [model, loaded, queue?.objects.length]);\n\n return model;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo } from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework/ui';\n\nimport { TranscriptionCapabilities } from '#types';\n\nimport { type Transcriber } from '../transcriber';\n\n/**\n * Records audio while user is speaking and transcribes it after user is done speaking.\n */\nexport const useTranscriber = ({\n audioStreamTrack,\n recorderConfig,\n transcriberConfig,\n onSegments,\n transcribe,\n}: Partial<TranscriptionCapabilities.GetTranscriberProps>) => {\n const [getTranscriber] = useCapabilities(TranscriptionCapabilities.Transcriber);\n\n // Initialize audio transcription.\n const transcriber = useMemo<Transcriber | undefined>(() => {\n if (!getTranscriber || !audioStreamTrack || !onSegments) {\n return undefined;\n }\n\n return getTranscriber({\n audioStreamTrack,\n recorderConfig,\n transcriberConfig,\n onSegments,\n transcribe,\n });\n }, [getTranscriber, audioStreamTrack, recorderConfig, transcriberConfig, onSegments, transcribe]);\n\n useEffect(() => {\n return () => {\n void transcriber?.close();\n };\n }, [transcriber]);\n\n return transcriber;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { scheduleMicroTask } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { log } from '@dxos/log';\nimport { useSoundEffect } from '@dxos/react-ui-sfx';\n\nimport { type TranscriberProps } from '../transcriber';\nimport { useAudioTrack } from './useAudioTrack';\nimport { useTranscriber } from './useTranscriber';\n\nexport type UseVoiceInputProps = {\n active?: boolean;\n onUpdate: (text: string) => void;\n};\n\n/**\n * Hook for voice input.\n */\nexport const useVoiceInput = ({ active, onUpdate }: UseVoiceInputProps) => {\n const soundStart = useSoundEffect('StartRecording');\n const soundStop = useSoundEffect('StopRecording');\n\n const handleSegments = useCallback<TranscriberProps['onSegments']>(async (segments) => {\n const text = segments.map((str) => str.text.trim().replace(/[^\\w\\s]/g, '')).join(' ');\n onUpdate(text);\n }, []);\n\n // Audio/transcription.\n const [recording, setRecording] = useState(false);\n const track = useAudioTrack(active);\n const transcriber = useTranscriber({\n audioStreamTrack: track,\n onSegments: handleSegments,\n });\n\n // Start/stop transcription.\n useEffect(() => {\n const ctx = new Context();\n scheduleMicroTask(ctx, async () => {\n if (active && transcriber) {\n await transcriber.open();\n log.info('starting...');\n setRecording(true);\n void soundStart.play();\n transcriber.startChunksRecording();\n } else if (!active && transcriber?.isOpen) {\n transcriber?.stopChunksRecording();\n await transcriber?.close();\n log.info('stopped');\n setRecording(false);\n void soundStop.play();\n }\n });\n\n return () => {\n void ctx.dispose();\n };\n }, [active, transcriber]);\n\n return { recording };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'org.dxos.plugin.transcription',\n name: 'Transcription',\n description: trim`\n Real-time voice-to-text transcription service for capturing spoken content.\n Convert audio input into searchable text that integrates seamlessly with notes and documents.\n `,\n icon: 'ph--microphone--regular',\n iconHue: 'sky',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-transcription',\n tags: ['labs'],\n screenshots: [],\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type IBlobEvent, type IMediaRecorder, MediaRecorder, register } from 'extendable-media-recorder';\nimport { WaveFile } from 'wavefile';\n\nimport { synchronized } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { trace } from '@dxos/tracing';\n\nimport { type AudioChunk, type AudioRecorder, type WavConfig } from './audio-recorder';\n\nlet initializingPromise: Promise<void> | undefined;\n\nconst initializeExtendableMediaRecorder = async () => {\n const { connect } = await import('extendable-media-recorder-wav-encoder');\n await register(await connect());\n};\n\nexport type MediaStreamRecorderProps = {\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: MediaStreamRecorderProps['config'];\n private _mediaRecorder?: IMediaRecorder = undefined;\n private _header?: Uint8Array = undefined;\n private _onChunk?: (chunk: AudioChunk) => void;\n\n constructor({ mediaStreamTrack, config }: MediaStreamRecorderProps) {\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 { trace } from '@dxos/tracing';\nimport { type ContentBlock } from '@dxos/types';\n\nimport { TRANSCRIPTION_URL } from '#types';\n\nimport { mergeFloat64Arrays } from '../util';\nimport { type AudioChunk, type AudioRecorder } from './audio-recorder';\n\nexport type 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\nexport type 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 /**\n * Override the transcription endpoint base URL.\n * Defaults to the DXOS calls service.\n */\n endpoint?: string;\n};\n\n/**\n * Function that converts a base64-encoded WAV payload into Whisper segments.\n * Allows callers to swap in alternative providers or mock the transport.\n */\nexport type TranscribeFn = (audio: string) => Promise<WhisperSegment[]>;\n\nexport type TranscriberProps = {\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: ContentBlock.Transcript[]) => Promise<void>;\n /**\n * Optional override of the transcription transport. When provided, supersedes `config.endpoint`.\n */\n transcribe?: TranscribeFn;\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: TranscriberProps['onSegments'];\n private readonly _transcribeFn?: TranscribeFn;\n\n private _recording = false;\n private _transcribeTask?: DeferredTask = undefined;\n\n constructor({ config, recorder, onSegments, transcribe }: TranscriberProps) {\n super();\n this._config = config;\n this._recorder = recorder;\n this._onSegments = onSegments;\n this._transcribeFn = transcribe;\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 throw new Error('No audio to send for transcribing');\n }\n\n let segments: unknown;\n if (this._transcribeFn) {\n segments = await this._transcribeFn(audio);\n } else {\n const endpoint = this._config.endpoint ?? TRANSCRIPTION_URL;\n const response = await fetch(`${endpoint}/transcribe`, {\n method: 'POST',\n body: JSON.stringify({ audio }),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n throw new Error(`Transcription failed: ${response.statusText}`);\n }\n\n ({ segments } = (await response.json()) as { segments?: unknown });\n }\n\n if (!Array.isArray(segments)) {\n throw new Error('Transcription response payload is invalid');\n }\n\n log.info('transcription response', { segments: segments.length });\n\n return segments as WhisperSegment[];\n }\n\n private _alignSegments(segments: WhisperSegment[], originalChunks: AudioChunk[]): ContentBlock.Transcript[] {\n const result = alignWhisperSegments(segments, originalChunks, this._lastUsedTimestamp);\n if (result.lastUsedTimestamp !== undefined) {\n this._lastUsedTimestamp = result.lastUsedTimestamp;\n }\n return result.transcripts;\n }\n}\n\n/**\n * Pure helper that filters and absolute-timestamps Whisper segments against a chunk timeline.\n * Exported for testing.\n *\n * @param segments - Raw segments returned by the Whisper service for `originalChunks`.\n * @param originalChunks - Chunks fed into the transcription request (used for the zero timestamp).\n * @param lastUsedTimestamp - Most recent absolute timestamp already emitted; segments whose end\n * falls strictly before this point are deduped out, as are individual words whose start does.\n */\nexport const alignWhisperSegments = (\n segments: WhisperSegment[],\n originalChunks: AudioChunk[],\n lastUsedTimestamp: number,\n): { transcripts: ContentBlock.Transcript[]; lastUsedTimestamp?: number } => {\n if (originalChunks.length === 0) {\n return { transcripts: [] };\n }\n\n const zeroTimestamp = originalChunks[0].timestamp;\n\n const filteredSegments = segments\n .filter((segment) => zeroTimestamp + segment.end * 1_000 >= lastUsedTimestamp)\n .map((segment) => {\n const words = segment.words.filter((word) => zeroTimestamp + word.start * 1_000 >= 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 { transcripts: [] };\n }\n\n return {\n transcripts: filteredSegments.map((segment) => ({\n _tag: 'transcript',\n started: new Date(zeroTimestamp + segment.start * 1_000).toISOString(),\n text: segment.text.trim(),\n })),\n lastUsedTimestamp: zeroTimestamp + filteredSegments.at(-1)!.end * 1_000,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, type Registry } from '@effect-atom/atom-react';\n\nimport { synchronized } from '@dxos/async';\nimport { Resource } from '@dxos/context';\nimport { Obj } from '@dxos/echo';\nimport { type Queue } from '@dxos/echo-db';\nimport { type EdgeHttpClient } from '@dxos/react-edge-client';\nimport { type ContentBlock, Message } from '@dxos/types';\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: Message.Message) => Promise<Message.Message>;\n\nexport type TranscriptionManagerOptions = {\n edgeClient: EdgeHttpClient;\n registry: Registry.Registry;\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 readonly _registry: Registry.Registry;\n private _audioStreamTrack?: MediaStreamTrack = undefined;\n private _identityDid?: string = undefined;\n private _mediaRecorder?: MediaStreamRecorder = undefined;\n private _transcriber?: Transcriber = undefined;\n private _queue?: Queue<Message.Message> = undefined;\n private _enabledAtom = Atom.make(false);\n\n constructor(options: TranscriptionManagerOptions) {\n super();\n this._edgeClient = options.edgeClient;\n this._messageEnricher = options.messageEnricher;\n this._registry = options.registry;\n }\n\n get enabled(): Atom.Atom<boolean> {\n return this._enabledAtom;\n }\n\n getEnabled(): boolean {\n return this._registry.get(this._enabledAtom);\n }\n\n setQueue(queue: Queue<Message.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.getEnabled()) {\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 async setEnabled(enabled: boolean): Promise<void> {\n if (this.getEnabled() === enabled) {\n return;\n }\n\n this._registry.set(this._enabledAtom, enabled ?? false);\n if (enabled) {\n await this._maybeRestartTranscriber();\n } else {\n await this._stopTranscriber();\n }\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 await this._maybeRestartTranscriber();\n }\n\n protected override async _open(): Promise<void> {\n await this._maybeRestartTranscriber();\n }\n\n protected override async _close(): Promise<void> {\n await this._stopTranscriber();\n }\n\n private async _maybeRestartTranscriber(): Promise<void> {\n if (!this._audioStreamTrack || !this.getEnabled() || !this.isOpen) {\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 await this._transcriber?.open();\n }\n }\n\n private async _stopTranscriber(): Promise<void> {\n await this._transcriber?.close();\n }\n\n private async _onSegments(segments: ContentBlock.Transcript[]): Promise<void> {\n if (!this.isOpen || !this._queue) {\n return;\n }\n\n let block = Obj.make(Message.Message, {\n created: new Date().toISOString(),\n blocks: segments,\n sender: { identityDid: this._identityDid },\n });\n\n if (this._messageEnricher) {\n block = await this._messageEnricher(block);\n }\n\n await this._queue.append([block]);\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { Annotation, Feed, Obj } from '@dxos/echo';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { Message, Transcript } from '@dxos/types';\n\nimport { BlueprintDefinition, OperationHandler, ReactSurface, Transcriber } from '#capabilities';\nimport { meta } from '#meta';\nimport { translations } from '#translations';\n\nimport { renderByline } from './util';\n\nexport const TranscriptionPlugin = Plugin.define(meta).pipe(\n AppPlugin.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\n AppPlugin.addMetadataModule({\n metadata: {\n id: Transcript.Transcript.typename,\n metadata: {\n icon: Annotation.IconAnnotation.get(Transcript.Transcript).pipe(Option.getOrThrow).icon,\n iconHue: Annotation.IconAnnotation.get(Transcript.Transcript).pipe(Option.getOrThrow).hue ?? 'white',\n // TODO(wittjosiah): Factor out. Artifact? Separate capability?\n getTextContent: async (transcript: Transcript.Transcript) => {\n const space = getSpace(transcript);\n const members = space?.members.get().map((member) => member.identity) ?? [];\n const feed = await transcript.feed.load();\n const queueDxn = Feed.getQueueDxn(feed);\n const queue = queueDxn ? space?.queues.get<Message.Message>(queueDxn) : undefined;\n await queue?.refresh();\n const content = queue?.objects\n .filter((message) => Obj.instanceOf(Message.Message, message))\n .flatMap((message, index) => renderByline(members)(message, index))\n .join('\\n\\n');\n return content;\n },\n },\n },\n }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSchemaModule({ schema: [Transcript.Transcript] }),\n AppPlugin.addSurfaceModule({ activate: ReactSurface }),\n AppPlugin.addTranslationsModule({ translations }),\n Plugin.addModule({\n id: 'transcription',\n activatesOn: AppActivationEvents.SetupAppGraph,\n activate: Transcriber,\n }),\n Plugin.make,\n);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "useThemeContext", "useTextEditor", "autoScroll", "createBasicExtensions", "createMarkdownExtensions", "createThemeExtensions", "decorateMarkdown", "documentSlots", "preview", "composable", "composableProps", "isTruthy", "RangeSetBuilder", "EditorView", "GutterMarker", "ViewPlugin", "gutter", "format", "intervalToDuration", "addEventListener", "combine", "Text", "Event", "invariant", "log", "_view", "replaceLines", "from", "remove", "insert", "count", "state", "posFrom", "line", "posTo", "text", "dispatch", "_chunkLineCounts", "_lineToChunk", "_changes", "_renderer", "initialChunks", "forEach", "chunk", "appendChunk", "toJSON", "chunks", "changes", "doc", "reset", "clear", "update", "_chunks", "push", "type", "index", "updateChunk", "deleteBlock", "splice", "id", "change", "document", "lastLine", "lines", "lineStart", "previousLineCount", "get", "newLines", "currentLine", "lineCount", "set", "chunkIds", "transcription", "model", "started", "gutter", "class", "lineMarkerChange", "update", "docChanged", "viewportChanged", "markers", "view", "start", "getStartTime", "chunks", "builder", "RangeSetBuilder", "from", "to", "visibleRanges", "line", "state", "doc", "lineAt", "block", "getChunkAtLine", "number", "blocks", "timestamp", "_tag", "add", "TimestampMarker", "Date", "length", "finish", "ViewPlugin", "fromClass", "_controls", "_cleanup", "_adapter", "_initialized", "DocumentAdapter", "scroller", "scrollDOM", "isAutoScrolling", "hasScrolled", "timeout", "scrollToBottom", "smooth", "style", "scrollBehavior", "classList", "clearTimeout", "setTimeout", "remove", "dispatch", "effects", "EditorView", "scrollIntoView", "y", "combine", "addEventListener", "on", "autoScroll", "scrollHeight", "scrollTop", "clientHeight", "sync", "_update", "destroy", "theme", "backgroundColor", "width", "paddingLeft", "paddingRight", "display", "textAlign", "padding", "GutterMarker", "_line", "_timestamp", "_started", "eq", "other", "toDOM", "el", "document", "createElement", "className", "textContent", "formatTimestamp", "onclick", "pos", "message", "undefined", "relative", "pad", "n", "String", "padStart", "hours", "minutes", "seconds", "intervalToDuration", "end", "format", "Transcription", "composable", "transcript", "object", "model", "children", "props", "forwardedRef", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "extensions", "createBasicExtensions", "readOnly", "lineWrapping", "search", "createMarkdownExtensions", "createThemeExtensions", "slots", "documentSlots", "decorateMarkdown", "preview", "transcription", "started", "Date", "undefined", "autoScroll", "filter", "isTruthy", "div", "composableProps", "classNames", "ref", "data-popover-collision-boundary", "useEffect", "useState", "scheduleTask", "Context", "log", "__dxlog_file", "useAudioFile", "objectUrl", "createObjectURL", "ctx", "onDispose", "URL", "revokeObjectURL", "audio", "Audio", "Promise", "resolve", "addEventListener", "err", "reject", "once", "audioCtx", "state", "destination", "source", "createMediaElementSource", "connect", "track", "constraints", "applyConstraints", "catch", "setStream", "stream", "audioUrl", "useEffect", "useState", "useAudioTrack", "active", "constraints", "track", "setTrack", "stop", "undefined", "initAudio", "audio", "Audio", "srcObject", "navigator", "mediaDevices", "getUserMedia", "getAudioTracks", "useEffect", "useMemo", "useState", "useQueueModelAdapter", "renderer", "queue", "initialChunks", "model", "useMemo", "SerializationModel", "loaded", "setLoaded", "useState", "useEffect", "update", "block", "objects", "appendChunk", "i", "isLoading", "setInterval", "clearInterval", "clearTimeout", "chunks", "length", "chunk", "at", "useEffect", "useMemo", "useCapabilities", "TranscriptionCapabilities", "useTranscriber", "audioStreamTrack", "recorderConfig", "transcriberConfig", "onSegments", "transcribe", "getTranscriber", "Transcriber", "transcriber", "undefined", "close", "useCallback", "useEffect", "useState", "scheduleMicroTask", "Context", "log", "useSoundEffect", "__dxlog_file", "soundStop", "useSoundEffect", "handleSegments", "useCallback", "segments", "str", "trim", "onUpdate", "text", "transcriber", "useTranscriber", "audioStreamTrack", "track", "onSegments", "useEffect", "scheduleMicroTask", "active", "log", "setRecording", "soundStart", "startChunksRecording", "stopChunksRecording", "close", "trim", "meta", "id", "name", "description", "icon", "iconHue", "source", "tags", "screenshots", "WaveFile", "synchronized", "invariant", "log", "trace", "initializingPromise", "__dxlog_file", "register", "connect", "_mediaStreamTrack", "_mediaRecorder", "_header", "undefined", "_onChunk", "mediaStreamTrack", "_config", "config", "settings", "channels", "sampleRate", "bitDepthCode", "setOnChunk", "onChunk", "err", "stream", "MediaStream", "mimeType", "ondataavailable", "_ondataavailable", "event", "start", "interval", "data", "uint8Array", "wav", "isHeader", "slice", "timestamp", "getSamples", "resource", "DeferredTask", "Trigger", "LifecycleState", "log", "trace", "TRANSCRIPTION_URL", "mergeFloat64Arrays", "__dxlog_file", "_audioChunks", "_lastUsedTimestamp", "_openTrigger", "Trigger", "_config", "_recorder", "_onSegments", "_transcribeFn", "_recording", "_transcribeTask", "config", "log", "setOnChunk", "chunk", "_saveAudioChunk", "DeferredTask", "stop", "startChunksRecording", "_lifecycleState", "LifecycleState", "stopChunksRecording", "info", "_dropOldChunks", "length", "schedule", "chunks", "segments", "_fetchTranscription", "audio", "Array", "isArray", "alignedSegments", "WaveFile", "wavConfig", "file", "fromScratch", "channels", "toBase64", "response", "method", "body", "JSON", "headers", "Error", "_alignSegments", "result", "alignWhisperSegments", "lastUsedTimestamp", "undefined", "span", "showInBrowserTimeline", "originalChunks", "transcripts", "filteredSegments", "filter", "segment", "word", "zeroTimestamp", "start", "words", "text", "_tag", "started", "Atom", "synchronized", "Resource", "Obj", "Message", "RECORD_INTERVAL", "PREFIXED_CHUNKS_AMOUNT", "TRANSCRIBE_AFTER_CHUNKS_AMOUNT", "TranscriptionManager", "Resource", "_edgeClient", "_messageEnricher", "_registry", "_audioStreamTrack", "undefined", "_identityDid", "_mediaRecorder", "_transcriber", "_queue", "_enabledAtom", "Atom", "make", "options", "edgeClient", "messageEnricher", "registry", "enabled", "getEnabled", "get", "setQueue", "queue", "setIdentityDid", "did", "setRecording", "recording", "isOpen", "startChunksRecording", "stopChunksRecording", "setEnabled", "set", "_maybeRestartTranscriber", "_stopTranscriber", "setAudioTrack", "track", "_open", "_close", "needReinit", "mediaStreamTrack", "MediaStreamRecorder", "config", "interval", "close", "Transcriber", "transcribeAfterChunksAmount", "prefixBufferChunksAmount", "recorder", "onSegments", "segments", "_onSegments", "open", "block", "Obj", "Message", "created", "Date", "toISOString", "blocks", "sender", "identityDid", "append", "Option", "Plugin", "AppActivationEvents", "AppPlugin", "Annotation", "Feed", "Obj", "getSpace", "Message", "Transcript", "BlueprintDefinition", "OperationHandler", "ReactSurface", "Transcriber", "meta", "translations", "TranscriptionPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addBlueprintDefinitionModule", "activate", "BlueprintDefinition", "addMetadataModule", "metadata", "id", "Transcript", "typename", "icon", "Annotation", "IconAnnotation", "get", "getOrThrow", "iconHue", "hue", "getTextContent", "transcript", "space", "getSpace", "members", "map", "member", "identity", "feed", "load", "queueDxn", "Feed", "getQueueDxn", "queue", "queues", "undefined", "refresh", "content", "objects", "filter", "message", "Obj", "instanceOf", "Message", "flatMap", "index", "renderByline", "join", "addOperationHandlerModule", "OperationHandler", "addSchemaModule", "schema", "addSurfaceModule", "ReactSurface", "addTranslationsModule", "translations", "addModule", "activatesOn", "AppActivationEvents", "SetupAppGraph", "Transcriber", "make"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/meta.ts":{"bytes":1658,"imports":[],"format":"esm"},"src/capabilities/capabilities.ts":{"bytes":2831,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/types/schema.ts":{"bytes":3614,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"src/types/types.ts":{"bytes":3227,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"src/types/schema.ts","kind":"import-statement","original":"./schema"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/types/index.ts":{"bytes":549,"imports":[{"path":"src/types/schema.ts","kind":"import-statement","original":"./schema"},{"path":"src/types/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/capabilities/intent-resolver.ts":{"bytes":3175,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/model/model.ts":{"bytes":23735,"imports":[{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/model/index.ts":{"bytes":463,"imports":[{"path":"src/model/model.ts","kind":"import-statement","original":"./model"}],"format":"esm"},"src/components/Transcript/transcript-extension.ts":{"bytes":24548,"imports":[{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/intervalToDuration","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"src/model/index.ts","kind":"import-statement","original":"../../model"}],"format":"esm"},"src/components/Transcript/Transcript.tsx":{"bytes":11103,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/components/Transcript/transcript-extension.ts","kind":"import-statement","original":"./transcript-extension"}],"format":"esm"},"src/components/Transcript/index.ts":{"bytes":492,"imports":[{"path":"src/components/Transcript/Transcript.tsx","kind":"import-statement","original":"./Transcript"}],"format":"esm"},"src/hooks/useAudioFile.ts":{"bytes":10099,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useAudioTrack.ts":{"bytes":3200,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useQueueModelAdapter.ts":{"bytes":5544,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/model/index.ts","kind":"import-statement","original":"../model"}],"format":"esm"},"src/hooks/useTranscriber.ts":{"bytes":3955,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"../capabilities"}],"format":"esm"},"src/hooks/useVoiceInput.ts":{"bytes":7138,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui-sfx","kind":"import-statement","external":true},{"path":"src/hooks/useAudioTrack.ts","kind":"import-statement","original":"./useAudioTrack"},{"path":"src/hooks/useTranscriber.ts","kind":"import-statement","original":"./useTranscriber"}],"format":"esm"},"src/hooks/index.ts":{"bytes":910,"imports":[{"path":"src/hooks/useAudioFile.ts","kind":"import-statement","original":"./useAudioFile"},{"path":"src/hooks/useAudioTrack.ts","kind":"import-statement","original":"./useAudioTrack"},{"path":"src/hooks/useQueueModelAdapter.ts","kind":"import-statement","original":"./useQueueModelAdapter"},{"path":"src/hooks/useTranscriber.ts","kind":"import-statement","original":"./useTranscriber"},{"path":"src/hooks/useVoiceInput.ts","kind":"import-statement","original":"./useVoiceInput"}],"format":"esm"},"src/components/TranscriptContainer.tsx":{"bytes":4577,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"src/components/Transcript/index.ts","kind":"import-statement","original":"./Transcript"},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../hooks"}],"format":"esm"},"src/components/index.ts":{"bytes":1004,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/components/Transcript/index.ts","kind":"import-statement","original":"./Transcript"},{"path":"src/components/TranscriptContainer.tsx","kind":"import-statement","original":"./TranscriptContainer"},{"path":"src/components/TranscriptContainer.tsx","kind":"dynamic-import","original":"./TranscriptContainer"}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":3023,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/transcriber/audio-recorder.ts":{"bytes":3178,"imports":[],"format":"esm"},"src/transcriber/media-stream-recorder.ts":{"bytes":13340,"imports":[{"path":"extendable-media-recorder","kind":"import-statement","external":true},{"path":"wavefile","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"extendable-media-recorder-wav-encoder","kind":"dynamic-import","external":true}],"format":"esm"},"src/util/array.ts":{"bytes":1530,"imports":[],"format":"esm"},"src/util/get-time-str.ts":{"bytes":1288,"imports":[],"format":"esm"},"src/util/monitor-audio-level.ts":{"bytes":5885,"imports":[],"format":"esm"},"src/util/index.ts":{"bytes":681,"imports":[{"path":"src/util/array.ts","kind":"import-statement","original":"./array"},{"path":"src/util/get-time-str.ts","kind":"import-statement","original":"./get-time-str"},{"path":"src/util/monitor-audio-level.ts","kind":"import-statement","original":"./monitor-audio-level"}],"format":"esm"},"src/transcriber/transcriber.ts":{"bytes":25509,"imports":[{"path":"wavefile","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"},{"path":"src/util/index.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"src/transcriber/transcription-manager.ts":{"bytes":19855,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/transcriber/media-stream-recorder.ts","kind":"import-statement","original":"./media-stream-recorder"},{"path":"src/transcriber/transcriber.ts","kind":"import-statement","original":"./transcriber"}],"format":"esm"},"src/transcriber/index.ts":{"bytes":835,"imports":[{"path":"src/transcriber/audio-recorder.ts","kind":"import-statement","original":"./audio-recorder"},{"path":"src/transcriber/media-stream-recorder.ts","kind":"import-statement","original":"./media-stream-recorder"},{"path":"src/transcriber/transcriber.ts","kind":"import-statement","original":"./transcriber"},{"path":"src/transcriber/transcription-manager.ts","kind":"import-statement","original":"./transcription-manager"}],"format":"esm"},"src/capabilities/transcriber.ts":{"bytes":7414,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/transcriber/index.ts","kind":"import-statement","original":"../transcriber"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":1381,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/capabilities/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"},{"path":"src/capabilities/transcriber.ts","kind":"dynamic-import","original":"./transcriber"}],"format":"esm"},"src/translations.ts":{"bytes":1848,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/TranscriptionPlugin.tsx":{"bytes":9511,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/index.ts":{"bytes":1069,"imports":[{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/hooks/index.ts","kind":"import-statement","original":"./hooks"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/transcriber/index.ts","kind":"import-statement","original":"./transcriber"},{"path":"src/TranscriptionPlugin.tsx","kind":"import-statement","original":"./TranscriptionPlugin"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5570},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-EQBICGOD.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-F2WY3YTD.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-VDKDOZRR.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-R7INNNUQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-U6QBOGTN.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["MediaStreamRecorder","TRANSCRIPTION_PLUGIN","Transcriber","Transcript","TranscriptContainer","TranscriptionCapabilities","TranscriptionContainer","TranscriptionManager","TranscriptionPlugin","meta","renderMarkdown","useAudioFile","useAudioTrack","useQueueModelAdapter","useTranscriber","useVoiceInput"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/TranscriptionPlugin.tsx":{"bytesInOutput":2003},"src/translations.ts":{"bytesInOutput":361}},"bytes":3430},"dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/types/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-R7INNNUQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"}],"exports":["TRANSCRIPTION_URL","TranscriptSchema","TranscriptType","TranscriptionAction"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":282},"dist/lib/browser/intent-resolver-3O33MMP5.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1628},"dist/lib/browser/intent-resolver-3O33MMP5.mjs":{"imports":[{"path":"dist/lib/browser/chunk-R7INNNUQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/intent-resolver.ts","inputs":{"src/capabilities/intent-resolver.ts":{"bytesInOutput":627}},"bytes":881},"dist/lib/browser/TranscriptContainer-E5NBJPAY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/TranscriptContainer-E5NBJPAY.mjs":{"imports":[{"path":"dist/lib/browser/chunk-F2WY3YTD.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-U6QBOGTN.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"}],"exports":["TranscriptionContainer","default"],"entryPoint":"src/components/TranscriptContainer.tsx","inputs":{},"bytes":295},"dist/lib/browser/react-surface-FJTMNF3K.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1462},"dist/lib/browser/react-surface-FJTMNF3K.mjs":{"imports":[{"path":"dist/lib/browser/chunk-EQBICGOD.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-F2WY3YTD.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-R7INNNUQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-U6QBOGTN.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":551}},"bytes":920},"dist/lib/browser/chunk-EQBICGOD.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":453},"dist/lib/browser/chunk-EQBICGOD.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"dist/lib/browser/TranscriptContainer-E5NBJPAY.mjs","kind":"dynamic-import"}],"exports":["TranscriptContainer"],"inputs":{"src/components/index.ts":{"bytesInOutput":114}},"bytes":220},"dist/lib/browser/chunk-F2WY3YTD.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":46766},"dist/lib/browser/chunk-F2WY3YTD.mjs":{"imports":[{"path":"dist/lib/browser/chunk-U6QBOGTN.mjs","kind":"import-statement"},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/intervalToDuration","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/intent-resolver-3O33MMP5.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/react-surface-FJTMNF3K.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/transcriber-YVOTUBKQ.mjs","kind":"dynamic-import"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui-sfx","kind":"import-statement","external":true}],"exports":["IntentResolver","ReactSurface","Transcriber","Transcript","TranscriptContainer_default","TranscriptionContainer","renderMarkdown","useAudioFile","useAudioTrack","useQueueModelAdapter","useTranscriber","useVoiceInput"],"inputs":{"src/components/TranscriptContainer.tsx":{"bytesInOutput":1094},"src/components/Transcript/Transcript.tsx":{"bytesInOutput":2474},"src/components/Transcript/transcript-extension.ts":{"bytesInOutput":5452},"src/model/model.ts":{"bytesInOutput":5023},"src/model/index.ts":{"bytesInOutput":0},"src/components/Transcript/index.ts":{"bytesInOutput":0},"src/hooks/useAudioFile.ts":{"bytesInOutput":2706},"src/hooks/index.ts":{"bytesInOutput":0},"src/hooks/useAudioTrack.ts":{"bytesInOutput":656},"src/hooks/useQueueModelAdapter.ts":{"bytesInOutput":1075},"src/hooks/useTranscriber.ts":{"bytesInOutput":804},"src/capabilities/index.ts":{"bytesInOutput":258},"src/hooks/useVoiceInput.ts":{"bytesInOutput":1869}},"bytes":22296},"dist/lib/browser/transcriber-YVOTUBKQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3706},"dist/lib/browser/transcriber-YVOTUBKQ.mjs":{"imports":[{"path":"dist/lib/browser/chunk-VDKDOZRR.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-R7INNNUQ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-U6QBOGTN.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/transcriber.ts","inputs":{"src/capabilities/transcriber.ts":{"bytesInOutput":1381}},"bytes":1743},"dist/lib/browser/chunk-VDKDOZRR.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":29031},"dist/lib/browser/chunk-VDKDOZRR.mjs":{"imports":[{"path":"dist/lib/browser/chunk-R7INNNUQ.mjs","kind":"import-statement"},{"path":"extendable-media-recorder","kind":"import-statement","external":true},{"path":"wavefile","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"extendable-media-recorder-wav-encoder","kind":"dynamic-import","external":true},{"path":"wavefile","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["MediaStreamRecorder","Transcriber","TranscriptionManager"],"inputs":{"src/transcriber/media-stream-recorder.ts":{"bytesInOutput":3734},"src/transcriber/transcriber.ts":{"bytesInOutput":6151},"src/util/array.ts":{"bytesInOutput":267},"src/util/index.ts":{"bytesInOutput":0},"src/transcriber/transcription-manager.ts":{"bytesInOutput":4909},"src/transcriber/index.ts":{"bytesInOutput":0}},"bytes":15421},"dist/lib/browser/chunk-R7INNNUQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3298},"dist/lib/browser/chunk-R7INNNUQ.mjs":{"imports":[{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true}],"exports":["TRANSCRIPTION_URL","TranscriptSchema","TranscriptType","TranscriptionAction"],"inputs":{"src/types/schema.ts":{"bytesInOutput":665},"src/types/index.ts":{"bytesInOutput":0},"src/types/types.ts":{"bytesInOutput":642}},"bytes":1555},"dist/lib/browser/chunk-U6QBOGTN.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1631},"dist/lib/browser/chunk-U6QBOGTN.mjs":{"imports":[{"path":"dist/lib/browser/chunk-5WH45KBY.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["TranscriptionCapabilities"],"inputs":{"src/capabilities/capabilities.ts":{"bytesInOutput":435}},"bytes":620},"dist/lib/browser/chunk-5WH45KBY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":817},"dist/lib/browser/chunk-5WH45KBY.mjs":{"imports":[],"exports":["TRANSCRIPTION_PLUGIN","meta"],"inputs":{"src/meta.ts":{"bytesInOutput":337}},"bytes":440}}}
|
|
1
|
+
{"inputs":{"src/types/capabilities.ts":{"bytes":2707,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"format":"esm"},"src/types/defs.ts":{"bytes":748,"imports":[],"format":"esm"},"src/types/index.ts":{"bytes":468,"imports":[{"path":"src/types/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/types/defs.ts","kind":"import-statement","original":"./defs"}],"format":"esm"},"src/util/array.ts":{"bytes":1437,"imports":[],"format":"esm"},"src/util/get-time-str.ts":{"bytes":1188,"imports":[],"format":"esm"},"src/util/monitor-audio-level.ts":{"bytes":5778,"imports":[],"format":"esm"},"src/util/render-byline.ts":{"bytes":4334,"imports":[],"format":"esm"},"src/util/index.ts":{"bytes":689,"imports":[{"path":"src/util/array.ts","kind":"import-statement","original":"./array"},{"path":"src/util/get-time-str.ts","kind":"import-statement","original":"./get-time-str"},{"path":"src/util/monitor-audio-level.ts","kind":"import-statement","original":"./monitor-audio-level"},{"path":"src/util/render-byline.ts","kind":"import-statement","original":"./render-byline"}],"format":"esm"},"src/model/model.ts":{"bytes":23206,"imports":[{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/model/index.ts":{"bytes":369,"imports":[{"path":"src/model/model.ts","kind":"import-statement","original":"./model"}],"format":"esm"},"src/components/Transcription/transcription-extension.ts":{"bytes":21377,"imports":[{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"date-fns/format","kind":"import-statement","external":true},{"path":"date-fns/intervalToDuration","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"src/model/index.ts","kind":"import-statement","original":"../../model"}],"format":"esm"},"src/components/Transcription/Transcription.tsx":{"bytes":6491,"imports":[{"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/ui-editor","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/util/index.ts","kind":"import-statement","original":"../../util"},{"path":"src/components/Transcription/transcription-extension.ts","kind":"import-statement","original":"./transcription-extension"}],"format":"esm"},"src/components/Transcription/index.ts":{"bytes":389,"imports":[{"path":"src/components/Transcription/Transcription.tsx","kind":"import-statement","original":"./Transcription"}],"format":"esm"},"src/components/index.ts":{"bytes":389,"imports":[{"path":"src/components/Transcription/index.ts","kind":"import-statement","original":"./Transcription"}],"format":"esm"},"src/hooks/useAudioFile.ts":{"bytes":9101,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useAudioTrack.ts":{"bytes":3098,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useQueueModelAdapter.ts":{"bytes":5439,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/model/index.ts","kind":"import-statement","original":"../model"}],"format":"esm"},"src/hooks/useTranscriber.ts":{"bytes":4042,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useVoiceInput.ts":{"bytes":6891,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui-sfx","kind":"import-statement","external":true},{"path":"src/hooks/useAudioTrack.ts","kind":"import-statement","original":"./useAudioTrack"},{"path":"src/hooks/useTranscriber.ts","kind":"import-statement","original":"./useTranscriber"}],"format":"esm"},"src/hooks/index.ts":{"bytes":816,"imports":[{"path":"src/hooks/useAudioFile.ts","kind":"import-statement","original":"./useAudioFile"},{"path":"src/hooks/useAudioTrack.ts","kind":"import-statement","original":"./useAudioTrack"},{"path":"src/hooks/useQueueModelAdapter.ts","kind":"import-statement","original":"./useQueueModelAdapter"},{"path":"src/hooks/useTranscriber.ts","kind":"import-statement","original":"./useTranscriber"},{"path":"src/hooks/useVoiceInput.ts","kind":"import-statement","original":"./useVoiceInput"}],"format":"esm"},"src/meta.ts":{"bytes":1977,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/transcriber/audio-recorder.ts":{"bytes":3065,"imports":[],"format":"esm"},"src/transcriber/media-stream-recorder.ts":{"bytes":13053,"imports":[{"path":"extendable-media-recorder","kind":"import-statement","external":true},{"path":"wavefile","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"extendable-media-recorder-wav-encoder","kind":"dynamic-import","external":true}],"format":"esm"},"src/transcriber/transcriber.ts":{"bytes":28403,"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":"#types","kind":"import-statement","external":true},{"path":"src/util/index.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"src/transcriber/transcription-manager.ts":{"bytes":16699,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"src/transcriber/media-stream-recorder.ts","kind":"import-statement","original":"./media-stream-recorder"},{"path":"src/transcriber/transcriber.ts","kind":"import-statement","original":"./transcriber"}],"format":"esm"},"src/transcriber/index.ts":{"bytes":731,"imports":[{"path":"src/transcriber/audio-recorder.ts","kind":"import-statement","original":"./audio-recorder"},{"path":"src/transcriber/media-stream-recorder.ts","kind":"import-statement","original":"./media-stream-recorder"},{"path":"src/transcriber/transcriber.ts","kind":"import-statement","original":"./transcriber"},{"path":"src/transcriber/transcription-manager.ts","kind":"import-statement","original":"./transcription-manager"}],"format":"esm"},"src/TranscriptionPlugin.tsx":{"bytes":8468,"imports":[{"path":"effect/Option","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#capabilities","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"src/util/index.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"src/index.ts":{"bytes":958,"imports":[{"path":"src/types/index.ts","kind":"import-statement","original":"./types"},{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/hooks/index.ts","kind":"import-statement","original":"./hooks"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/transcriber/index.ts","kind":"import-statement","original":"./transcriber"},{"path":"src/TranscriptionPlugin.tsx","kind":"import-statement","original":"./TranscriptionPlugin"}],"format":"esm"},"src/blueprints/transcription-blueprint.ts":{"bytes":2671,"imports":[{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"#operations","kind":"import-statement","external":true}],"format":"esm"},"src/blueprints/index.ts":{"bytes":567,"imports":[{"path":"src/blueprints/transcription-blueprint.ts","kind":"import-statement","original":"./transcription-blueprint"}],"format":"esm"},"src/translations.ts":{"bytes":1752,"imports":[{"path":"#meta","kind":"import-statement","external":true}],"format":"esm"},"src/operations/definitions.ts":{"bytes":10490,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"format":"esm"},"src/operations/create.ts":{"bytes":2095,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"src/operations/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"},"src/operations/open.ts":{"bytes":3191,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"src/util/index.ts","kind":"import-statement","original":"../util"},{"path":"src/operations/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"},"src/operations/summarize.ts":{"bytes":11663,"imports":[{"path":"effect/Array","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Function","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/assistant","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/operations/definitions.ts","kind":"import-statement","original":"./definitions"}],"format":"esm"},"src/operations/index.ts":{"bytes":1258,"imports":[{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"src/operations/definitions.ts","kind":"import-statement","original":"./definitions"},{"path":"src/operations/create.ts","kind":"dynamic-import","original":"./create"},{"path":"src/operations/open.ts","kind":"dynamic-import","original":"./open"},{"path":"src/operations/summarize.ts","kind":"dynamic-import","original":"./summarize"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":73420},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-3L623EVL.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-KAEXRX3Y.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"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/ui-editor","kind":"import-statement","external":true},{"path":"@dxos/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/ui","kind":"import-statement","external":true},{"path":"#types","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":"@dxos/react-ui-sfx","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"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":"#types","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#capabilities","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true}],"exports":["MediaStreamRecorder","Transcriber","Transcription","TranscriptionCapabilities","TranscriptionManager","TranscriptionPlugin","alignWhisperSegments","meta","renderByline","useAudioFile","useAudioTrack","useQueueModelAdapter","useTranscriber","useVoiceInput"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/components/Transcription/Transcription.tsx":{"bytesInOutput":1320},"src/components/Transcription/transcription-extension.ts":{"bytesInOutput":4798},"src/model/model.ts":{"bytesInOutput":5124},"src/model/index.ts":{"bytesInOutput":0},"src/components/Transcription/index.ts":{"bytesInOutput":0},"src/components/index.ts":{"bytesInOutput":0},"src/hooks/useAudioFile.ts":{"bytesInOutput":2341},"src/hooks/index.ts":{"bytesInOutput":0},"src/hooks/useAudioTrack.ts":{"bytesInOutput":656},"src/hooks/useQueueModelAdapter.ts":{"bytesInOutput":1075},"src/hooks/useTranscriber.ts":{"bytesInOutput":936},"src/hooks/useVoiceInput.ts":{"bytesInOutput":1785},"src/meta.ts":{"bytesInOutput":506},"src/transcriber/index.ts":{"bytesInOutput":0},"src/transcriber/media-stream-recorder.ts":{"bytesInOutput":3783},"src/transcriber/transcriber.ts":{"bytesInOutput":6646},"src/transcriber/transcription-manager.ts":{"bytesInOutput":3915},"src/TranscriptionPlugin.tsx":{"bytesInOutput":2030}},"bytes":35988},"dist/lib/browser/blueprints/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1379},"dist/lib/browser/blueprints/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"#operations","kind":"import-statement","external":true}],"exports":["TranscriptionBlueprint"],"entryPoint":"src/blueprints/index.ts","inputs":{"src/blueprints/transcription-blueprint.ts":{"bytesInOutput":634},"src/blueprints/index.ts":{"bytesInOutput":0}},"bytes":819},"dist/lib/browser/translations.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":866},"dist/lib/browser/translations.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"#meta","kind":"import-statement","external":true}],"exports":["translations"],"entryPoint":"src/translations.ts","inputs":{"src/translations.ts":{"bytesInOutput":391}},"bytes":515},"dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/types/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-3L623EVL.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"}],"exports":["TRANSCRIPTION_URL","TranscriptionCapabilities"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":218},"dist/lib/browser/chunk-3L623EVL.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1900},"dist/lib/browser/chunk-3L623EVL.mjs":{"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"exports":["TRANSCRIPTION_URL","TranscriptionCapabilities"],"inputs":{"src/types/capabilities.ts":{"bytesInOutput":431},"src/types/index.ts":{"bytesInOutput":0},"src/types/defs.ts":{"bytesInOutput":66}},"bytes":654},"dist/lib/browser/operations/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":636},"dist/lib/browser/operations/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-L4HW35L6.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"dist/lib/browser/create-ULR5DPJZ.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/open-SFMPLZVW.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/summarize-I3POXUK3.mjs","kind":"dynamic-import"}],"exports":["TranscriptOperation","TranscriptionOperationHandlerSet"],"entryPoint":"src/operations/index.ts","inputs":{"src/operations/index.ts":{"bytesInOutput":239}},"bytes":490},"dist/lib/browser/create-ULR5DPJZ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1184},"dist/lib/browser/create-ULR5DPJZ.mjs":{"imports":[{"path":"dist/lib/browser/chunk-L4HW35L6.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/operations/create.ts","inputs":{"src/operations/create.ts":{"bytesInOutput":386}},"bytes":580},"dist/lib/browser/open-SFMPLZVW.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1792},"dist/lib/browser/open-SFMPLZVW.mjs":{"imports":[{"path":"dist/lib/browser/chunk-KAEXRX3Y.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-L4HW35L6.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/operations/open.ts","inputs":{"src/operations/open.ts":{"bytesInOutput":618}},"bytes":859},"dist/lib/browser/chunk-KAEXRX3Y.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2917},"dist/lib/browser/chunk-KAEXRX3Y.mjs":{"imports":[],"exports":["mergeFloat64Arrays","renderByline"],"inputs":{"src/util/render-byline.ts":{"bytesInOutput":785},"src/util/array.ts":{"bytesInOutput":267},"src/util/index.ts":{"bytesInOutput":0}},"bytes":1197},"dist/lib/browser/summarize-I3POXUK3.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6074},"dist/lib/browser/summarize-I3POXUK3.mjs":{"imports":[{"path":"dist/lib/browser/chunk-L4HW35L6.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Array","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Function","kind":"import-statement","external":true},{"path":"effect/Layer","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/assistant","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/operations/summarize.ts","inputs":{"src/operations/summarize.ts":{"bytesInOutput":3189}},"bytes":3395},"dist/lib/browser/chunk-L4HW35L6.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5256},"dist/lib/browser/chunk-L4HW35L6.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"exports":["Create","Open","Summarize","definitions_exports"],"inputs":{"src/operations/definitions.ts":{"bytesInOutput":3034}},"bytes":3229},"dist/lib/browser/chunk-J5LGTIGS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/chunk-J5LGTIGS.mjs":{"imports":[],"exports":["__export"],"inputs":{},"bytes":235}}}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {
|
|
2
|
+
renderByline
|
|
3
|
+
} from "./chunk-KAEXRX3Y.mjs";
|
|
4
|
+
import {
|
|
5
|
+
Open
|
|
6
|
+
} from "./chunk-L4HW35L6.mjs";
|
|
7
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
8
|
+
|
|
9
|
+
// src/operations/open.ts
|
|
10
|
+
import * as Effect from "effect/Effect";
|
|
11
|
+
import { Operation } from "@dxos/compute";
|
|
12
|
+
import { Database, Feed, Filter } from "@dxos/echo";
|
|
13
|
+
import { Message } from "@dxos/types";
|
|
14
|
+
var handler = Open.pipe(Operation.withHandler(Effect.fn(function* ({ transcript }) {
|
|
15
|
+
const transcriptObj = yield* Database.load(transcript);
|
|
16
|
+
const feed = yield* Database.load(transcriptObj.feed);
|
|
17
|
+
const messages = yield* Feed.runQuery(feed, Filter.type(Message.Message));
|
|
18
|
+
const content = messages.flatMap((message, index) => renderByline([])(message, index)).join("\n\n");
|
|
19
|
+
return {
|
|
20
|
+
content
|
|
21
|
+
};
|
|
22
|
+
})));
|
|
23
|
+
var open_default = handler;
|
|
24
|
+
export {
|
|
25
|
+
open_default as default
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=open-SFMPLZVW.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/operations/open.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\nimport { Database, Feed, Filter } from '@dxos/echo';\nimport { Message } from '@dxos/types';\n\nimport { renderByline } from '../util';\nimport { Open } from './definitions';\n\nconst handler: Operation.WithHandler<typeof Open> = Open.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ transcript }) {\n const transcriptObj = yield* Database.load(transcript);\n const feed = yield* Database.load(transcriptObj.feed);\n const messages = yield* Feed.runQuery(feed, Filter.type(Message.Message));\n const content = messages\n .flatMap((message: Message.Message, index: number) => renderByline([])(message, index))\n .join('\\n\\n');\n return { content };\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,MAAMC,cAAc;AACvC,SAASC,eAAe;AAKxB,IAAMC,UAA8CC,KAAKC,KACvDC,UAAUC,YACDC,UAAG,WAAW,EAAEC,WAAU,GAAE;AACjC,QAAMC,gBAAgB,OAAOC,SAASC,KAAKH,UAAAA;AAC3C,QAAMI,OAAO,OAAOF,SAASC,KAAKF,cAAcG,IAAI;AACpD,QAAMC,WAAW,OAAOC,KAAKC,SAASH,MAAMI,OAAOC,KAAKC,QAAQA,OAAO,CAAA;AACvE,QAAMC,UAAUN,SACbO,QAAQ,CAACC,SAA0BC,UAAkBC,aAAa,CAAA,CAAE,EAAEF,SAASC,KAAAA,CAAAA,EAC/EE,KAAK,MAAA;AACR,SAAO;IAAEL;EAAQ;AACnB,CAAA,CAAA,CAAA;AAIJ,IAAA,eAAejB;",
|
|
6
|
+
"names": ["Effect", "Operation", "Database", "Feed", "Filter", "Message", "handler", "Open", "pipe", "Operation", "withHandler", "fn", "transcript", "transcriptObj", "Database", "load", "feed", "messages", "Feed", "runQuery", "Filter", "type", "Message", "content", "flatMap", "message", "index", "renderByline", "join"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
definitions_exports
|
|
3
|
+
} from "../chunk-L4HW35L6.mjs";
|
|
4
|
+
import "../chunk-J5LGTIGS.mjs";
|
|
5
|
+
|
|
6
|
+
// src/operations/index.ts
|
|
7
|
+
import { OperationHandlerSet } from "@dxos/compute";
|
|
8
|
+
var TranscriptionOperationHandlerSet = OperationHandlerSet.lazy(() => import("../create-ULR5DPJZ.mjs"), () => import("../open-SFMPLZVW.mjs"), () => import("../summarize-I3POXUK3.mjs"));
|
|
9
|
+
export {
|
|
10
|
+
definitions_exports as TranscriptOperation,
|
|
11
|
+
TranscriptionOperationHandlerSet
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/operations/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { OperationHandlerSet } from '@dxos/compute';\n\nexport * as TranscriptOperation from './definitions';\n\nexport const TranscriptionOperationHandlerSet = OperationHandlerSet.lazy(\n () => import('./create'),\n () => import('./open'),\n () => import('./summarize'),\n);\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,SAASA,2BAA2B;AAI7B,IAAMC,mCAAmCD,oBAAoBE,KAClE,MAAM,OAAO,wBAAA,GACb,MAAM,OAAO,sBAAA,GACb,MAAM,OAAO,2BAAA,CAAA;",
|
|
6
|
+
"names": ["OperationHandlerSet", "TranscriptionOperationHandlerSet", "lazy"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Summarize
|
|
3
|
+
} from "./chunk-L4HW35L6.mjs";
|
|
4
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
5
|
+
|
|
6
|
+
// src/operations/summarize.ts
|
|
7
|
+
import * as Array from "effect/Array";
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import * as Function from "effect/Function";
|
|
10
|
+
import * as Layer from "effect/Layer";
|
|
11
|
+
import * as Option from "effect/Option";
|
|
12
|
+
import { AiService, ConsolePrinter, ToolExecutionService, ToolResolverService } from "@dxos/ai";
|
|
13
|
+
import { AiRequest, GenerationObserver } from "@dxos/assistant";
|
|
14
|
+
import { Trace } from "@dxos/compute";
|
|
15
|
+
import { Operation, OperationRegistry } from "@dxos/compute";
|
|
16
|
+
import { Database } from "@dxos/echo";
|
|
17
|
+
import { trim } from "@dxos/util";
|
|
18
|
+
var handler = Summarize.pipe(Operation.withHandler(Effect.fnUntraced(function* ({ transcript, notes }) {
|
|
19
|
+
const result = yield* new AiRequest({
|
|
20
|
+
observer: GenerationObserver.fromPrinter(new ConsolePrinter({
|
|
21
|
+
tag: "summarize"
|
|
22
|
+
}))
|
|
23
|
+
}).run({
|
|
24
|
+
prompt: `Transcript: ${transcript}
|
|
25
|
+
|
|
26
|
+
Notes: ${notes}`,
|
|
27
|
+
history: [],
|
|
28
|
+
system: systemPrompt
|
|
29
|
+
});
|
|
30
|
+
const summary = Function.pipe(result, Array.findLast((msg) => msg.sender.role === "assistant" && msg.blocks.some((block) => block._tag === "text")), Option.flatMap((msg) => Function.pipe(msg.blocks, Array.findLast((block) => block._tag === "text"), Option.map((block) => block.text))), Option.getOrThrowWith(() => new Error("No summary found")));
|
|
31
|
+
return {
|
|
32
|
+
summary
|
|
33
|
+
};
|
|
34
|
+
}, Effect.provide(Layer.mergeAll(AiService.model("@anthropic/claude-sonnet-4-0"), ToolResolverService.layerEmpty, ToolExecutionService.layerEmpty, Trace.writerLayerNoop, Database.notAvailable, Layer.succeed(Operation.Service, {
|
|
35
|
+
invoke: () => Effect.die("Not available."),
|
|
36
|
+
schedule: () => Effect.die("Not available."),
|
|
37
|
+
invokePromise: async () => ({
|
|
38
|
+
error: new Error("Not available.")
|
|
39
|
+
})
|
|
40
|
+
}), Layer.succeed(OperationRegistry.Service, {
|
|
41
|
+
resolve: () => Effect.succeed(void 0)
|
|
42
|
+
}))))));
|
|
43
|
+
var summarize_default = handler;
|
|
44
|
+
var systemPrompt = trim`
|
|
45
|
+
You are a helpful assistant that summarizes transcripts of meetings.
|
|
46
|
+
|
|
47
|
+
# Goal
|
|
48
|
+
Create a markdown summary of the meeting transcript with text notes provided.
|
|
49
|
+
Notes are very important so make sure to include them in the summary if they contain meaningful information.
|
|
50
|
+
|
|
51
|
+
# Formatting
|
|
52
|
+
- Format the summary as a markdown document without extra comments like "Here is the summary of the transcript:".
|
|
53
|
+
- Use markdown formatting for headings and bullet points.
|
|
54
|
+
- Format the summary as a list of key points and takeaways.
|
|
55
|
+
- All names of people should be in bold.
|
|
56
|
+
|
|
57
|
+
# Note Taking
|
|
58
|
+
- Correlate items in the summary with the person of origin to build a coherent narrative.
|
|
59
|
+
- Include short quotes verbatim where appropriate. Especially when concerned with design decisions and problem descriptions.
|
|
60
|
+
|
|
61
|
+
# Tasks
|
|
62
|
+
At the end of the summary include tasks.
|
|
63
|
+
Extract only the tasks that are:
|
|
64
|
+
- Directly actionable.
|
|
65
|
+
- Clearly assigned to a person or team (or can easily be inferred).
|
|
66
|
+
- Strongly implied by the conversation and/or user note (no speculative tasks).
|
|
67
|
+
- Specific enough that someone reading them would know exactly what to do next.
|
|
68
|
+
|
|
69
|
+
Format all tasks as markdown checkboxes using the syntax:
|
|
70
|
+
- [ ] Task description.
|
|
71
|
+
|
|
72
|
+
Additional information can be included (indented).
|
|
73
|
+
|
|
74
|
+
If no actionable tasks are found, omit this tasks section.
|
|
75
|
+
`;
|
|
76
|
+
export {
|
|
77
|
+
summarize_default as default
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=summarize-I3POXUK3.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/operations/summarize.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Array from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport * as Function from 'effect/Function';\nimport * as Layer from 'effect/Layer';\nimport * as Option from 'effect/Option';\n\nimport { AiService, ConsolePrinter, ToolExecutionService, ToolResolverService } from '@dxos/ai';\nimport { AiRequest, GenerationObserver } from '@dxos/assistant';\nimport { Trace } from '@dxos/compute';\nimport { Operation, OperationRegistry } from '@dxos/compute';\nimport { Database } from '@dxos/echo';\nimport { trim } from '@dxos/util';\n\nimport { Summarize } from './definitions';\n\n/**\n * Summarize a transcript of a meeting.\n */\nconst handler: Operation.WithHandler<typeof Summarize> = Summarize.pipe(\n Operation.withHandler(\n Effect.fnUntraced(\n function* ({ transcript, notes }) {\n const result = yield* new AiRequest({\n observer: GenerationObserver.fromPrinter(new ConsolePrinter({ tag: 'summarize' })),\n }).run({\n prompt: `Transcript: ${transcript}\\n\\nNotes: ${notes}`,\n history: [],\n system: systemPrompt,\n });\n\n const summary = Function.pipe(\n result,\n Array.findLast((msg) => msg.sender.role === 'assistant' && msg.blocks.some((block) => block._tag === 'text')),\n Option.flatMap((msg) =>\n Function.pipe(\n msg.blocks,\n Array.findLast((block) => block._tag === 'text'),\n Option.map((block) => block.text),\n ),\n ),\n Option.getOrThrowWith(() => new Error('No summary found')),\n );\n\n return { summary };\n },\n Effect.provide(\n Layer.mergeAll(\n AiService.model('@anthropic/claude-sonnet-4-0'),\n ToolResolverService.layerEmpty,\n ToolExecutionService.layerEmpty,\n Trace.writerLayerNoop,\n Database.notAvailable,\n Layer.succeed(Operation.Service, {\n invoke: () => Effect.die('Not available.'),\n schedule: () => Effect.die('Not available.'),\n invokePromise: async () => ({ error: new Error('Not available.') }),\n } as any),\n Layer.succeed(OperationRegistry.Service, { resolve: () => Effect.succeed(undefined) } as any),\n ),\n ),\n ),\n ),\n);\n\nexport default handler;\n\nconst systemPrompt = trim`\n You are a helpful assistant that summarizes transcripts of meetings.\n\n # Goal\n Create a markdown summary of the meeting transcript with text notes provided.\n Notes are very important so make sure to include them in the summary if they contain meaningful information.\n\n # Formatting\n - Format the summary as a markdown document without extra comments like \"Here is the summary of the transcript:\".\n - Use markdown formatting for headings and bullet points.\n - Format the summary as a list of key points and takeaways.\n - All names of people should be in bold.\n\n # Note Taking\n - Correlate items in the summary with the person of origin to build a coherent narrative.\n - Include short quotes verbatim where appropriate. Especially when concerned with design decisions and problem descriptions.\n\n # Tasks\n At the end of the summary include tasks.\n Extract only the tasks that are:\n - Directly actionable.\n - Clearly assigned to a person or team (or can easily be inferred).\n - Strongly implied by the conversation and/or user note (no speculative tasks).\n - Specific enough that someone reading them would know exactly what to do next.\n\n Format all tasks as markdown checkboxes using the syntax:\n - [ ] Task description.\n\n Additional information can be included (indented).\n\n If no actionable tasks are found, omit this tasks section.\n`;\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,YAAYA,WAAW;AACvB,YAAYC,YAAY;AACxB,YAAYC,cAAc;AAC1B,YAAYC,WAAW;AACvB,YAAYC,YAAY;AAExB,SAASC,WAAWC,gBAAgBC,sBAAsBC,2BAA2B;AACrF,SAASC,WAAWC,0BAA0B;AAC9C,SAASC,aAAa;AACtB,SAASC,WAAWC,yBAAyB;AAC7C,SAASC,gBAAgB;AACzB,SAASC,YAAY;AAOrB,IAAMC,UAAmDC,UAAUC,KACjEC,UAAUC,YACDC,kBACL,WAAW,EAAEC,YAAYC,MAAK,GAAE;AAC9B,QAAMC,SAAS,OAAO,IAAIC,UAAU;IAClCC,UAAUC,mBAAmBC,YAAY,IAAIC,eAAe;MAAEC,KAAK;IAAY,CAAA,CAAA;EACjF,CAAA,EAAGC,IAAI;IACLC,QAAQ,eAAeV,UAAAA;;SAAwBC,KAAAA;IAC/CU,SAAS,CAAA;IACTC,QAAQC;EACV,CAAA;AAEA,QAAMC,UAAmBlB,cACvBM,QACMa,eAAS,CAACC,QAAQA,IAAIC,OAAOC,SAAS,eAAeF,IAAIG,OAAOC,KAAK,CAACC,UAAUA,MAAMC,SAAS,MAAA,CAAA,GAC9FC,eAAQ,CAACP,QACLpB,cACPoB,IAAIG,QACEJ,eAAS,CAACM,UAAUA,MAAMC,SAAS,MAAA,GAClCE,WAAI,CAACH,UAAUA,MAAMI,IAAI,CAAA,CAAA,GAG7BC,sBAAe,MAAM,IAAIC,MAAM,kBAAA,CAAA,CAAA;AAGxC,SAAO;IAAEb;EAAQ;AACnB,GACOc,eACCC,eACJC,UAAUC,MAAM,8BAAA,GAChBC,oBAAoBC,YACpBC,qBAAqBD,YACrBE,MAAMC,iBACNC,SAASC,cACHC,cAAQ1C,UAAU2C,SAAS;EAC/BC,QAAQ,MAAaC,WAAI,gBAAA;EACzBC,UAAU,MAAaD,WAAI,gBAAA;EAC3BE,eAAe,aAAa;IAAEC,OAAO,IAAIlB,MAAM,gBAAA;EAAkB;AACnE,CAAA,GACMY,cAAQO,kBAAkBN,SAAS;EAAEO,SAAS,MAAaR,eAAQS,MAAAA;AAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAO9F,IAAA,oBAAetD;AAEf,IAAMmB,eAAeoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
|
|
6
|
+
"names": ["Array", "Effect", "Function", "Layer", "Option", "AiService", "ConsolePrinter", "ToolExecutionService", "ToolResolverService", "AiRequest", "GenerationObserver", "Trace", "Operation", "OperationRegistry", "Database", "trim", "handler", "Summarize", "pipe", "Operation", "withHandler", "fnUntraced", "transcript", "notes", "result", "AiRequest", "observer", "GenerationObserver", "fromPrinter", "ConsolePrinter", "tag", "run", "prompt", "history", "system", "systemPrompt", "summary", "findLast", "msg", "sender", "role", "blocks", "some", "block", "_tag", "flatMap", "map", "text", "getOrThrowWith", "Error", "provide", "mergeAll", "AiService", "model", "ToolResolverService", "layerEmpty", "ToolExecutionService", "Trace", "writerLayerNoop", "Database", "notAvailable", "succeed", "Service", "invoke", "die", "schedule", "invokePromise", "error", "OperationRegistry", "resolve", "undefined", "trim"]
|
|
7
|
+
}
|