@dxos/plugin-transcription 0.8.4-main.28f8d3d → 0.8.4-main.406dc2a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/TranscriptContainer-QN5WUMWJ.mjs +11 -0
- package/dist/lib/browser/blueprint-definition-GO6GTEBT.mjs +150 -0
- package/dist/lib/browser/blueprint-definition-GO6GTEBT.mjs.map +7 -0
- package/dist/lib/browser/{chunk-UKUSJTQW.mjs → chunk-77NWYLC6.mjs} +2 -2
- package/dist/lib/browser/{chunk-5WH45KBY.mjs → chunk-7LNCQDTT.mjs} +9 -4
- package/dist/lib/browser/chunk-7LNCQDTT.mjs.map +7 -0
- package/dist/lib/browser/{chunk-KJIQQHJB.mjs → chunk-COBQIZ6B.mjs} +78 -98
- package/dist/lib/browser/{chunk-KJIQQHJB.mjs.map → chunk-COBQIZ6B.mjs.map} +3 -3
- package/dist/lib/browser/chunk-GGHMOEKZ.mjs +63 -0
- package/dist/lib/browser/chunk-GGHMOEKZ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-SREIAQSP.mjs → chunk-LCK3YRQF.mjs} +5 -5
- package/dist/lib/browser/chunk-LCK3YRQF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BJWYA2BU.mjs → chunk-ZS2FXKEF.mjs} +141 -168
- package/dist/lib/browser/chunk-ZS2FXKEF.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +22 -18
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/intent-resolver-52EPFRMR.mjs +25 -0
- package/dist/lib/browser/intent-resolver-52EPFRMR.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-4MEJMKYQ.mjs → react-surface-LCP2D2MF.mjs} +10 -10
- package/dist/lib/browser/react-surface-LCP2D2MF.mjs.map +7 -0
- package/dist/lib/browser/{transcriber-V77CN7XX.mjs → transcriber-NG5MRCP6.mjs} +7 -7
- package/dist/lib/browser/{transcriber-V77CN7XX.mjs.map → transcriber-NG5MRCP6.mjs.map} +1 -1
- package/dist/lib/browser/types/index.mjs +6 -8
- package/dist/lib/node-esm/{TranscriptContainer-GEUOOYHX.mjs → TranscriptContainer-WCUWVVSD.mjs} +4 -4
- package/dist/lib/node-esm/blueprint-definition-6SU7GLBR.mjs +151 -0
- package/dist/lib/node-esm/blueprint-definition-6SU7GLBR.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-A33GNR44.mjs → chunk-A6SB234F.mjs} +78 -98
- package/dist/lib/node-esm/{chunk-A33GNR44.mjs.map → chunk-A6SB234F.mjs.map} +3 -3
- package/dist/lib/node-esm/chunk-FTTZ4YSX.mjs +64 -0
- package/dist/lib/node-esm/chunk-FTTZ4YSX.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-XMUCZBP3.mjs → chunk-KLTPFUKN.mjs} +8 -4
- package/dist/lib/node-esm/chunk-KLTPFUKN.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-PHP7MCAY.mjs → chunk-N5Z4SKPH.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-Y7PCJ34K.mjs → chunk-PEZRQYKO.mjs} +141 -168
- package/dist/lib/node-esm/chunk-PEZRQYKO.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-TM2ASOZA.mjs → chunk-RWRG3S2O.mjs} +5 -5
- package/dist/lib/node-esm/chunk-RWRG3S2O.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +22 -18
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/intent-resolver-DZBQQRHN.mjs +26 -0
- package/dist/lib/node-esm/intent-resolver-DZBQQRHN.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-EZUPNHUC.mjs → react-surface-7UC2YXX2.mjs} +10 -10
- package/dist/lib/node-esm/react-surface-7UC2YXX2.mjs.map +7 -0
- package/dist/lib/node-esm/{transcriber-3SX3DNLV.mjs → transcriber-SMU7HD6F.mjs} +7 -7
- package/dist/lib/node-esm/{transcriber-3SX3DNLV.mjs.map → transcriber-SMU7HD6F.mjs.map} +1 -1
- package/dist/lib/node-esm/types/index.mjs +6 -8
- package/dist/types/src/TranscriptionPlugin.d.ts +1 -1
- package/dist/types/src/TranscriptionPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +3 -2
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/transcriber.d.ts +1 -1
- package/dist/types/src/components/Transcript/Transcript.d.ts +5 -5
- package/dist/types/src/components/Transcript/Transcript.d.ts.map +1 -1
- package/dist/types/src/components/Transcript/Transcript.stories.d.ts +31 -16
- package/dist/types/src/components/Transcript/Transcript.stories.d.ts.map +1 -1
- package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts +3 -3
- package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts.map +1 -1
- package/dist/types/src/components/Transcript/transcript-extension.d.ts +1 -5
- package/dist/types/src/components/Transcript/transcript-extension.d.ts.map +1 -1
- package/dist/types/src/components/TranscriptContainer.d.ts +2 -2
- package/dist/types/src/components/TranscriptContainer.d.ts.map +1 -1
- package/dist/types/src/components/stories/FileTranscription.stories.d.ts +8 -4
- package/dist/types/src/components/stories/FileTranscription.stories.d.ts.map +1 -1
- package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts +13 -6
- package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts.map +1 -1
- package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts +10 -6
- package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts.map +1 -1
- package/dist/types/src/components/stories/TranscriptionStory.d.ts +2 -1
- package/dist/types/src/components/stories/TranscriptionStory.d.ts.map +1 -1
- package/dist/types/src/functions/index.d.ts +3 -0
- package/dist/types/src/functions/index.d.ts.map +1 -0
- package/dist/types/src/functions/open.d.ts +7 -0
- package/dist/types/src/functions/open.d.ts.map +1 -0
- package/dist/types/src/functions/summarize.d.ts +11 -0
- package/dist/types/src/functions/summarize.d.ts.map +1 -0
- package/dist/types/src/hooks/useAudioFile.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +0 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/segments-normalization/normalization.d.ts +376 -331
- package/dist/types/src/segments-normalization/normalization.d.ts.map +1 -1
- package/dist/types/src/testing/testing.d.ts +1 -1
- package/dist/types/src/testing/testing.d.ts.map +1 -1
- package/dist/types/src/transcriber/transcription-manager.d.ts +3 -7
- package/dist/types/src/transcriber/transcription-manager.d.ts.map +1 -1
- package/dist/types/src/types/Transcript.d.ts +30 -0
- package/dist/types/src/types/Transcript.d.ts.map +1 -0
- package/dist/types/src/types/TranscriptAction.d.ts +23 -0
- package/dist/types/src/types/TranscriptAction.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +2 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +0 -26
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +61 -62
- package/src/TranscriptionPlugin.tsx +57 -53
- package/src/capabilities/blueprint-definition.ts +31 -0
- package/src/capabilities/capabilities.ts +3 -3
- package/src/capabilities/index.ts +1 -0
- package/src/capabilities/intent-resolver.ts +4 -10
- package/src/capabilities/react-surface.tsx +2 -2
- package/src/components/Transcript/Transcript.stories.tsx +32 -30
- package/src/components/Transcript/Transcript.tsx +17 -25
- package/src/components/Transcript/deprecated/OldTranscript.tsx +7 -7
- package/src/components/Transcript/transcript-extension.ts +2 -39
- package/src/components/TranscriptContainer.tsx +6 -6
- package/src/components/stories/FileTranscription.stories.tsx +42 -30
- package/src/components/stories/KeyWordRecognition.stories.tsx +16 -9
- package/src/components/stories/MicrophoneTranscription.stories.tsx +36 -32
- package/src/components/stories/TranscriptionStory.tsx +10 -6
- package/src/functions/index.ts +6 -0
- package/src/functions/open.ts +39 -0
- package/src/functions/summarize.ts +103 -0
- package/src/hooks/useAudioFile.ts +49 -53
- package/src/meta.ts +1 -3
- package/src/segments-normalization/normalization.test.ts +1 -1
- package/src/segments-normalization/normalization.ts +1 -1
- package/src/testing/testing.ts +5 -5
- package/src/transcriber/transcription-manager.ts +17 -38
- package/src/types/{schema.ts → Transcript.ts} +12 -9
- package/src/types/TranscriptAction.ts +24 -0
- package/src/types/index.ts +2 -1
- package/src/types/types.ts +0 -24
- package/dist/lib/browser/TranscriptContainer-FH7VAWYA.mjs +0 -11
- package/dist/lib/browser/chunk-5WH45KBY.mjs.map +0 -7
- package/dist/lib/browser/chunk-BJWYA2BU.mjs.map +0 -7
- package/dist/lib/browser/chunk-KWOOVS5G.mjs +0 -55
- package/dist/lib/browser/chunk-KWOOVS5G.mjs.map +0 -7
- package/dist/lib/browser/chunk-SREIAQSP.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-AOVQ7JI4.mjs +0 -30
- package/dist/lib/browser/intent-resolver-AOVQ7JI4.mjs.map +0 -7
- package/dist/lib/browser/react-surface-4MEJMKYQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-IKQMDRY6.mjs +0 -56
- package/dist/lib/node-esm/chunk-IKQMDRY6.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TM2ASOZA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XMUCZBP3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-Y7PCJ34K.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-P4XPIKQF.mjs +0 -31
- package/dist/lib/node-esm/intent-resolver-P4XPIKQF.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-EZUPNHUC.mjs.map +0 -7
- package/dist/types/src/types/schema.d.ts +0 -41
- package/dist/types/src/types/schema.d.ts.map +0 -1
- /package/dist/lib/browser/{TranscriptContainer-FH7VAWYA.mjs.map → TranscriptContainer-QN5WUMWJ.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-UKUSJTQW.mjs.map → chunk-77NWYLC6.mjs.map} +0 -0
- /package/dist/lib/node-esm/{TranscriptContainer-GEUOOYHX.mjs.map → TranscriptContainer-WCUWVVSD.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-PHP7MCAY.mjs.map → chunk-N5Z4SKPH.mjs.map} +0 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
__export,
|
|
4
|
+
meta
|
|
5
|
+
} from "./chunk-KLTPFUKN.mjs";
|
|
6
|
+
|
|
7
|
+
// src/types/TranscriptAction.ts
|
|
8
|
+
var TranscriptAction_exports = {};
|
|
9
|
+
__export(TranscriptAction_exports, {
|
|
10
|
+
Create: () => Create
|
|
11
|
+
});
|
|
12
|
+
import * as Schema2 from "effect/Schema";
|
|
13
|
+
import { SpaceSchema } from "@dxos/client/echo";
|
|
14
|
+
|
|
15
|
+
// src/types/Transcript.ts
|
|
16
|
+
var Transcript_exports = {};
|
|
17
|
+
__export(Transcript_exports, {
|
|
18
|
+
Transcript: () => Transcript,
|
|
19
|
+
makeTranscript: () => makeTranscript
|
|
20
|
+
});
|
|
21
|
+
import * as Schema from "effect/Schema";
|
|
22
|
+
import { Queue } from "@dxos/client/echo";
|
|
23
|
+
import { Obj, Ref, Type } from "@dxos/echo";
|
|
24
|
+
var Transcript = Schema.Struct({
|
|
25
|
+
// TODO(wittjosiah): Remove?
|
|
26
|
+
// TODO(burdon): Use Date or string?
|
|
27
|
+
started: Schema.optional(Schema.String),
|
|
28
|
+
ended: Schema.optional(Schema.String),
|
|
29
|
+
/**
|
|
30
|
+
* Queue containing TranscriptBlock objects.
|
|
31
|
+
*/
|
|
32
|
+
queue: Type.Ref(Queue)
|
|
33
|
+
}).pipe(Type.Obj({
|
|
34
|
+
typename: "dxos.org/type/Transcript",
|
|
35
|
+
version: "0.1.0"
|
|
36
|
+
}));
|
|
37
|
+
var TranscriptHeader = Schema.Struct({
|
|
38
|
+
started: Schema.optional(Schema.String)
|
|
39
|
+
});
|
|
40
|
+
var makeTranscript = (queueDxn) => Obj.make(Transcript, {
|
|
41
|
+
queue: Ref.fromDXN(queueDxn)
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
// src/types/TranscriptAction.ts
|
|
45
|
+
var Create = class extends Schema2.TaggedClass()(`${meta.id}/action/create`, {
|
|
46
|
+
input: Schema2.Struct({
|
|
47
|
+
name: Schema2.optional(Schema2.String),
|
|
48
|
+
space: SpaceSchema
|
|
49
|
+
}),
|
|
50
|
+
output: Schema2.Struct({
|
|
51
|
+
object: Transcript
|
|
52
|
+
})
|
|
53
|
+
}) {
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// src/types/types.ts
|
|
57
|
+
var TRANSCRIPTION_URL = "https://calls-service.dxos.workers.dev";
|
|
58
|
+
|
|
59
|
+
export {
|
|
60
|
+
Transcript_exports,
|
|
61
|
+
TranscriptAction_exports,
|
|
62
|
+
TRANSCRIPTION_URL
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=chunk-FTTZ4YSX.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types/TranscriptAction.ts", "../../../src/types/Transcript.ts", "../../../src/types/types.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { SpaceSchema } from '@dxos/client/echo';\n\nimport { meta } from '../meta';\n\nimport { Transcript } from './Transcript';\n\n/**\n * Endpoint to the calls service.\n */\nexport class Create extends Schema.TaggedClass<Create>()(`${meta.id}/action/create`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n space: SpaceSchema,\n }),\n output: Schema.Struct({\n object: Transcript,\n }),\n}) {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Queue } from '@dxos/client/echo';\nimport { type DXN, Obj, Ref, Type } from '@dxos/echo';\n\n/**\n * Root transcript object created when the user starts a transcription.\n */\nexport const Transcript = Schema.Struct({\n // TODO(wittjosiah): Remove?\n // TODO(burdon): Use Date or string?\n started: Schema.optional(Schema.String),\n ended: Schema.optional(Schema.String),\n\n /**\n * Queue containing TranscriptBlock objects.\n */\n queue: Type.Ref(Queue),\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/Transcript',\n version: '0.1.0',\n }),\n);\n\nexport type Transcript = Schema.Schema.Type<typeof Transcript>;\n\n// TODO(burdon): Do these need to be kept in sync with EDGE?\n\n/**\n * First message in queue.\n * Contains metadata for the recording and transcript.\n */\nconst TranscriptHeader = Schema.Struct({\n started: Schema.optional(Schema.String),\n});\n\nexport type TranscriptHeader = Schema.Schema.Type<typeof TranscriptHeader>;\n\nexport const makeTranscript = (queueDxn: DXN) => Obj.make(Transcript, { queue: Ref.fromDXN(queueDxn) });\n", "//\n// Copyright 2025 DXOS.org\n//\n\n/**\n * Endpoint to the calls service.\n */\n// TODO(burdon): Reconfigure/move.\nexport const TRANSCRIPTION_URL = 'https://calls-service.dxos.workers.dev';\n"],
|
|
5
|
+
"mappings": ";;;;;;;AAAA;;;;AAIA,YAAYA,aAAY;AAExB,SAASC,mBAAmB;;;ACN5B;;;;;AAIA,YAAYC,YAAY;AAExB,SAASC,aAAa;AACtB,SAAmBC,KAAKC,KAAKC,YAAY;AAKlC,IAAMC,aAAoBC,cAAO;;;EAGtCC,SAAgBC,gBAAgBC,aAAM;EACtCC,OAAcF,gBAAgBC,aAAM;;;;EAKpCE,OAAOC,KAAKC,IAAIC,KAAAA;AAClB,CAAA,EAAGC,KACDH,KAAKI,IAAI;EACPC,UAAU;EACVC,SAAS;AACX,CAAA,CAAA;AAWF,IAAMC,mBAA0Bb,cAAO;EACrCC,SAAgBC,gBAAgBC,aAAM;AACxC,CAAA;AAIO,IAAMW,iBAAiB,CAACC,aAAkBL,IAAIM,KAAKjB,YAAY;EAAEM,OAAOE,IAAIU,QAAQF,QAAAA;AAAU,CAAA;;;AD5B9F,IAAMG,SAAN,cAA4BC,oBAAW,EAAW,GAAGC,KAAKC,EAAE,kBAAkB;EACnFC,OAAcC,eAAO;IACnBC,MAAaC,iBAAgBC,cAAM;IACnCC,OAAOC;EACT,CAAA;EACAC,QAAeN,eAAO;IACpBO,QAAQC;EACV,CAAA;AACF,CAAA,EAAA;AAAI;;;AEfG,IAAMC,oBAAoB;",
|
|
6
|
+
"names": ["Schema", "SpaceSchema", "Schema", "Queue", "Obj", "Ref", "Type", "Transcript", "Struct", "started", "optional", "String", "ended", "queue", "Type", "Ref", "Queue", "pipe", "Obj", "typename", "version", "TranscriptHeader", "makeTranscript", "queueDxn", "make", "fromDXN", "Create", "TaggedClass", "meta", "id", "input", "Struct", "name", "optional", "String", "space", "SpaceSchema", "output", "object", "Transcript", "TRANSCRIPTION_URL"]
|
|
7
|
+
}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __export = (target, all) => {
|
|
4
|
+
for (var name in all)
|
|
5
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
6
|
+
};
|
|
2
7
|
|
|
3
8
|
// src/meta.ts
|
|
4
|
-
var TRANSCRIPTION_PLUGIN = "dxos.org/plugin/transcription";
|
|
5
9
|
var meta = {
|
|
6
|
-
id:
|
|
10
|
+
id: "dxos.org/plugin/transcription",
|
|
7
11
|
name: "Transcription",
|
|
8
12
|
description: "Voice transcription.",
|
|
9
13
|
icon: "ph--microphone--regular",
|
|
@@ -15,7 +19,7 @@ var meta = {
|
|
|
15
19
|
};
|
|
16
20
|
|
|
17
21
|
export {
|
|
18
|
-
|
|
22
|
+
__export,
|
|
19
23
|
meta
|
|
20
24
|
};
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
25
|
+
//# sourceMappingURL=chunk-KLTPFUKN.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/meta.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const meta: PluginMeta = {\n id: 'dxos.org/plugin/transcription',\n name: 'Transcription',\n description: 'Voice transcription.',\n icon: 'ph--microphone--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-transcription',\n tags: ['labs'],\n screenshots: [],\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;AAMO,IAAMA,OAAmB;EAC9BC,IAAI;EACJC,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;EACRC,MAAM;IAAC;;EACPC,aAAa,CAAA;AACf;",
|
|
6
|
+
"names": ["meta", "id", "name", "description", "icon", "source", "tags", "screenshots"]
|
|
7
|
+
}
|
|
@@ -2,9 +2,9 @@ import { createRequire } from 'node:module';const require = createRequire(import
|
|
|
2
2
|
|
|
3
3
|
// src/components/index.ts
|
|
4
4
|
import { lazy } from "react";
|
|
5
|
-
var TranscriptContainer = lazy(() => import("./TranscriptContainer-
|
|
5
|
+
var TranscriptContainer = lazy(() => import("./TranscriptContainer-WCUWVVSD.mjs"));
|
|
6
6
|
|
|
7
7
|
export {
|
|
8
8
|
TranscriptContainer
|
|
9
9
|
};
|
|
10
|
-
//# sourceMappingURL=chunk-
|
|
10
|
+
//# sourceMappingURL=chunk-N5Z4SKPH.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
TranscriptionCapabilities
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-RWRG3S2O.mjs";
|
|
5
5
|
|
|
6
6
|
// src/components/TranscriptContainer.tsx
|
|
7
7
|
import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
|
|
@@ -24,76 +24,66 @@ var useAudioFile = (audioUrl, constraints) => {
|
|
|
24
24
|
L: 20
|
|
25
25
|
});
|
|
26
26
|
scheduleTask(ctx, async () => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const audio2 = new Audio();
|
|
34
|
-
audio2.src = objectUrl;
|
|
35
|
-
await new Promise((resolve, reject) => {
|
|
36
|
-
audio2.addEventListener("error", (err) => {
|
|
37
|
-
log.error("error", {
|
|
38
|
-
err
|
|
39
|
-
}, {
|
|
40
|
-
F: __dxlog_file,
|
|
41
|
-
L: 37,
|
|
42
|
-
S: void 0,
|
|
43
|
-
C: (f, a) => f(...a)
|
|
44
|
-
});
|
|
45
|
-
reject(err);
|
|
46
|
-
}, {
|
|
47
|
-
once: true
|
|
27
|
+
try {
|
|
28
|
+
const response = await fetch(audioUrl);
|
|
29
|
+
const blob = await response.blob();
|
|
30
|
+
const objectUrl = URL.createObjectURL(blob);
|
|
31
|
+
ctx.onDispose(() => {
|
|
32
|
+
URL.revokeObjectURL(objectUrl);
|
|
48
33
|
});
|
|
49
|
-
audio2
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
});
|
|
56
|
-
try {
|
|
57
|
-
await audio2.play();
|
|
58
|
-
resolve();
|
|
59
|
-
} catch (playError) {
|
|
60
|
-
log.error("Play failed", {
|
|
61
|
-
playError
|
|
34
|
+
const audio2 = new Audio();
|
|
35
|
+
audio2.src = objectUrl;
|
|
36
|
+
await new Promise((resolve, reject) => {
|
|
37
|
+
audio2.addEventListener("error", (err) => {
|
|
38
|
+
log.error("error", {
|
|
39
|
+
err
|
|
62
40
|
}, {
|
|
63
41
|
F: __dxlog_file,
|
|
64
|
-
L:
|
|
42
|
+
L: 39,
|
|
65
43
|
S: void 0,
|
|
66
44
|
C: (f, a) => f(...a)
|
|
67
45
|
});
|
|
46
|
+
reject(err);
|
|
47
|
+
}, {
|
|
48
|
+
once: true
|
|
49
|
+
});
|
|
50
|
+
audio2.addEventListener("canplay", async () => {
|
|
68
51
|
resolve();
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
52
|
+
}, {
|
|
53
|
+
once: true
|
|
54
|
+
});
|
|
55
|
+
audio2.load();
|
|
72
56
|
});
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
57
|
+
const audioCtx = new AudioContext();
|
|
58
|
+
if (audioCtx.state === "suspended") {
|
|
59
|
+
await audioCtx.resume();
|
|
60
|
+
}
|
|
61
|
+
const destination = audioCtx.createMediaStreamDestination();
|
|
62
|
+
destination.channelCount = 1;
|
|
63
|
+
const source = audioCtx.createMediaElementSource(audio2);
|
|
64
|
+
source.connect(destination);
|
|
65
|
+
const track2 = destination.stream.getAudioTracks()[0];
|
|
66
|
+
if (constraints) {
|
|
67
|
+
await track2.applyConstraints(constraints).catch((err) => log.catch(err, void 0, {
|
|
68
|
+
F: __dxlog_file,
|
|
69
|
+
L: 68,
|
|
70
|
+
S: void 0,
|
|
71
|
+
C: (f, a) => f(...a)
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
setStream({
|
|
75
|
+
audio: audio2,
|
|
76
|
+
stream: destination.stream,
|
|
77
|
+
track: destination.stream.getAudioTracks()[0]
|
|
78
|
+
});
|
|
79
|
+
} catch (err) {
|
|
80
|
+
log.catch(err, void 0, {
|
|
86
81
|
F: __dxlog_file,
|
|
87
|
-
L:
|
|
82
|
+
L: 78,
|
|
88
83
|
S: void 0,
|
|
89
84
|
C: (f, a) => f(...a)
|
|
90
|
-
})
|
|
85
|
+
});
|
|
91
86
|
}
|
|
92
|
-
setStream({
|
|
93
|
-
audio: audio2,
|
|
94
|
-
stream: destination.stream,
|
|
95
|
-
track: destination.stream.getAudioTracks()[0]
|
|
96
|
-
});
|
|
97
87
|
});
|
|
98
88
|
return () => {
|
|
99
89
|
void ctx.dispose();
|
|
@@ -145,12 +135,21 @@ import { Text } from "@codemirror/state";
|
|
|
145
135
|
import { Event } from "@dxos/async";
|
|
146
136
|
import { invariant } from "@dxos/invariant";
|
|
147
137
|
import { log as log2 } from "@dxos/log";
|
|
138
|
+
function _define_property(obj, key, value) {
|
|
139
|
+
if (key in obj) {
|
|
140
|
+
Object.defineProperty(obj, key, {
|
|
141
|
+
value,
|
|
142
|
+
enumerable: true,
|
|
143
|
+
configurable: true,
|
|
144
|
+
writable: true
|
|
145
|
+
});
|
|
146
|
+
} else {
|
|
147
|
+
obj[key] = value;
|
|
148
|
+
}
|
|
149
|
+
return obj;
|
|
150
|
+
}
|
|
148
151
|
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-transcription/src/model/model.ts";
|
|
149
152
|
var DocumentAdapter = class {
|
|
150
|
-
_view;
|
|
151
|
-
constructor(_view) {
|
|
152
|
-
this._view = _view;
|
|
153
|
-
}
|
|
154
153
|
/** The document must always have at least one line. */
|
|
155
154
|
lineCount() {
|
|
156
155
|
return this._view.state.doc.lines - 1;
|
|
@@ -182,30 +181,12 @@ var DocumentAdapter = class {
|
|
|
182
181
|
}
|
|
183
182
|
});
|
|
184
183
|
}
|
|
184
|
+
constructor(_view) {
|
|
185
|
+
_define_property(this, "_view", void 0);
|
|
186
|
+
this._view = _view;
|
|
187
|
+
}
|
|
185
188
|
};
|
|
186
189
|
var SerializationModel = class {
|
|
187
|
-
_renderer;
|
|
188
|
-
/** Ordered set of chunks. */
|
|
189
|
-
_chunks;
|
|
190
|
-
/** Map of chunk IDs to their current line counts. */
|
|
191
|
-
_chunkLineCounts;
|
|
192
|
-
/** Map of line numbers to chunk IDs. */
|
|
193
|
-
_lineToChunk;
|
|
194
|
-
/** Track chunk changes since last sync. */
|
|
195
|
-
_changes;
|
|
196
|
-
/** Emits when the document is updated. */
|
|
197
|
-
update;
|
|
198
|
-
constructor(_renderer, initialChunks = []) {
|
|
199
|
-
this._renderer = _renderer;
|
|
200
|
-
this._chunks = [];
|
|
201
|
-
this._chunkLineCounts = /* @__PURE__ */ new Map();
|
|
202
|
-
this._lineToChunk = /* @__PURE__ */ new Map();
|
|
203
|
-
this._changes = [];
|
|
204
|
-
this.update = new Event();
|
|
205
|
-
initialChunks.forEach((chunk) => {
|
|
206
|
-
this.appendChunk(chunk);
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
190
|
toJSON() {
|
|
210
191
|
return {
|
|
211
192
|
chunks: this._chunks.length,
|
|
@@ -343,6 +324,23 @@ var SerializationModel = class {
|
|
|
343
324
|
this._changes.length = 0;
|
|
344
325
|
return this;
|
|
345
326
|
}
|
|
327
|
+
constructor(_renderer, initialChunks = []) {
|
|
328
|
+
_define_property(this, "_renderer", void 0);
|
|
329
|
+
_define_property(this, "_chunks", void 0);
|
|
330
|
+
_define_property(this, "_chunkLineCounts", void 0);
|
|
331
|
+
_define_property(this, "_lineToChunk", void 0);
|
|
332
|
+
_define_property(this, "_changes", void 0);
|
|
333
|
+
_define_property(this, "update", void 0);
|
|
334
|
+
this._renderer = _renderer;
|
|
335
|
+
this._chunks = [];
|
|
336
|
+
this._chunkLineCounts = /* @__PURE__ */ new Map();
|
|
337
|
+
this._lineToChunk = /* @__PURE__ */ new Map();
|
|
338
|
+
this._changes = [];
|
|
339
|
+
this.update = new Event();
|
|
340
|
+
initialChunks.forEach((chunk) => {
|
|
341
|
+
this.appendChunk(chunk);
|
|
342
|
+
});
|
|
343
|
+
}
|
|
346
344
|
};
|
|
347
345
|
|
|
348
346
|
// src/hooks/useQueueModelAdapter.ts
|
|
@@ -399,9 +397,10 @@ import { useCapabilities } from "@dxos/app-framework";
|
|
|
399
397
|
|
|
400
398
|
// src/capabilities/index.ts
|
|
401
399
|
import { lazy } from "@dxos/app-framework";
|
|
402
|
-
var
|
|
403
|
-
var
|
|
404
|
-
var
|
|
400
|
+
var BlueprintDefinition = lazy(() => import("./blueprint-definition-6SU7GLBR.mjs"));
|
|
401
|
+
var IntentResolver = lazy(() => import("./intent-resolver-DZBQQRHN.mjs"));
|
|
402
|
+
var ReactSurface = lazy(() => import("./react-surface-7UC2YXX2.mjs"));
|
|
403
|
+
var Transcriber = lazy(() => import("./transcriber-SMU7HD6F.mjs"));
|
|
405
404
|
|
|
406
405
|
// src/hooks/useTranscriber.ts
|
|
407
406
|
var useTranscriber = ({ audioStreamTrack, recorderConfig, transcriberConfig, onSegments }) => {
|
|
@@ -498,10 +497,10 @@ var useVoiceInput = ({ active, onUpdate }) => {
|
|
|
498
497
|
// src/components/Transcript/Transcript.tsx
|
|
499
498
|
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
500
499
|
import React from "react";
|
|
501
|
-
import {
|
|
502
|
-
import { createBasicExtensions, createMarkdownExtensions,
|
|
500
|
+
import { useThemeContext } from "@dxos/react-ui";
|
|
501
|
+
import { autoScroll, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, decorateMarkdown, preview, useTextEditor } from "@dxos/react-ui-editor";
|
|
503
502
|
import { mx } from "@dxos/react-ui-theme";
|
|
504
|
-
import {
|
|
503
|
+
import { isTruthy } from "@dxos/util";
|
|
505
504
|
|
|
506
505
|
// src/components/Transcript/transcript-extension.ts
|
|
507
506
|
import { RangeSetBuilder } from "@codemirror/state";
|
|
@@ -509,7 +508,20 @@ import { EditorView, GutterMarker, ViewPlugin, gutter } from "@codemirror/view";
|
|
|
509
508
|
import { format } from "date-fns/format";
|
|
510
509
|
import { intervalToDuration } from "date-fns/intervalToDuration";
|
|
511
510
|
import { addEventListener, combine } from "@dxos/async";
|
|
512
|
-
|
|
511
|
+
function _define_property2(obj, key, value) {
|
|
512
|
+
if (key in obj) {
|
|
513
|
+
Object.defineProperty(obj, key, {
|
|
514
|
+
value,
|
|
515
|
+
enumerable: true,
|
|
516
|
+
configurable: true,
|
|
517
|
+
writable: true
|
|
518
|
+
});
|
|
519
|
+
} else {
|
|
520
|
+
obj[key] = value;
|
|
521
|
+
}
|
|
522
|
+
return obj;
|
|
523
|
+
}
|
|
524
|
+
var transcript = ({ model, started }) => {
|
|
513
525
|
return [
|
|
514
526
|
// Show timestamps in the gutter.
|
|
515
527
|
gutter({
|
|
@@ -537,11 +549,23 @@ var transcript = ({ model, started, renderButton }) => {
|
|
|
537
549
|
}),
|
|
538
550
|
// Listen for model updates.
|
|
539
551
|
ViewPlugin.fromClass(class {
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
552
|
+
update(_update) {
|
|
553
|
+
if (!this._initialized) {
|
|
554
|
+
this._initialized = true;
|
|
555
|
+
setTimeout(() => {
|
|
556
|
+
model.sync(this._adapter);
|
|
557
|
+
});
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
destroy() {
|
|
561
|
+
this._controls?.remove();
|
|
562
|
+
this._cleanup();
|
|
563
|
+
}
|
|
544
564
|
constructor(view) {
|
|
565
|
+
_define_property2(this, "_controls", void 0);
|
|
566
|
+
_define_property2(this, "_cleanup", void 0);
|
|
567
|
+
_define_property2(this, "_adapter", void 0);
|
|
568
|
+
_define_property2(this, "_initialized", false);
|
|
545
569
|
this._adapter = new DocumentAdapter(view);
|
|
546
570
|
const scroller = view.scrollDOM;
|
|
547
571
|
let isAutoScrolling = false;
|
|
@@ -563,62 +587,21 @@ var transcript = ({ model, started, renderButton }) => {
|
|
|
563
587
|
})
|
|
564
588
|
});
|
|
565
589
|
};
|
|
566
|
-
if (renderButton) {
|
|
567
|
-
this._controls = document.createElement("div");
|
|
568
|
-
this._controls.classList.add("cm-controls", "transition-opacity", "duration-300", "opacity-0");
|
|
569
|
-
view.dom.appendChild(this._controls);
|
|
570
|
-
renderButton(this._controls, {
|
|
571
|
-
onClick: () => {
|
|
572
|
-
scrollToBottom(false);
|
|
573
|
-
}
|
|
574
|
-
}, view);
|
|
575
|
-
}
|
|
576
590
|
this._cleanup = combine(addEventListener(view.scrollDOM, "scroll", () => {
|
|
577
591
|
if (!isAutoScrolling) {
|
|
578
592
|
hasScrolled = true;
|
|
579
593
|
this._controls?.classList.remove("opacity-0");
|
|
580
594
|
}
|
|
581
595
|
}), model.update.on(() => {
|
|
582
|
-
const
|
|
596
|
+
const autoScroll2 = scroller.scrollHeight - scroller.scrollTop - scroller.clientHeight === 0 || !hasScrolled;
|
|
583
597
|
model.sync(this._adapter);
|
|
584
|
-
if (
|
|
598
|
+
if (autoScroll2) {
|
|
585
599
|
scrollToBottom(true);
|
|
586
600
|
}
|
|
587
601
|
}));
|
|
588
602
|
}
|
|
589
|
-
update(update) {
|
|
590
|
-
if (!this._initialized) {
|
|
591
|
-
this._initialized = true;
|
|
592
|
-
setTimeout(() => {
|
|
593
|
-
model.sync(this._adapter);
|
|
594
|
-
});
|
|
595
|
-
}
|
|
596
|
-
}
|
|
597
|
-
destroy() {
|
|
598
|
-
this._controls?.remove();
|
|
599
|
-
this._cleanup();
|
|
600
|
-
}
|
|
601
603
|
}),
|
|
602
604
|
EditorView.theme({
|
|
603
|
-
".cm-scroller": {
|
|
604
|
-
overflowY: "scroll"
|
|
605
|
-
},
|
|
606
|
-
".cm-hide-scrollbar": {
|
|
607
|
-
scrollbarWidth: "none",
|
|
608
|
-
"-ms-overflow-style": "none"
|
|
609
|
-
},
|
|
610
|
-
".cm-hide-scrollbar::-webkit-scrollbar": {
|
|
611
|
-
display: "none"
|
|
612
|
-
},
|
|
613
|
-
".cm-controls": {
|
|
614
|
-
position: "absolute",
|
|
615
|
-
bottom: "0.5rem",
|
|
616
|
-
right: "0.5rem",
|
|
617
|
-
zIndex: 1e3
|
|
618
|
-
},
|
|
619
|
-
".cm-line": {
|
|
620
|
-
paddingRight: "1rem"
|
|
621
|
-
},
|
|
622
605
|
".cm-timestamp-gutter": {
|
|
623
606
|
width: "6rem",
|
|
624
607
|
paddingRight: "1rem"
|
|
@@ -632,12 +615,6 @@ var transcript = ({ model, started, renderButton }) => {
|
|
|
632
615
|
];
|
|
633
616
|
};
|
|
634
617
|
var TimestampMarker = class extends GutterMarker {
|
|
635
|
-
_line;
|
|
636
|
-
_timestamp;
|
|
637
|
-
_started;
|
|
638
|
-
constructor(_line, _timestamp, _started) {
|
|
639
|
-
super(), this._line = _line, this._timestamp = _timestamp, this._started = _started;
|
|
640
|
-
}
|
|
641
618
|
eq(other) {
|
|
642
619
|
return other._timestamp === this._timestamp;
|
|
643
620
|
}
|
|
@@ -655,6 +632,9 @@ var TimestampMarker = class extends GutterMarker {
|
|
|
655
632
|
};
|
|
656
633
|
return el;
|
|
657
634
|
}
|
|
635
|
+
constructor(_line, _timestamp, _started) {
|
|
636
|
+
super(), _define_property2(this, "_line", void 0), _define_property2(this, "_timestamp", void 0), _define_property2(this, "_started", void 0), this._line = _line, this._timestamp = _timestamp, this._started = _started;
|
|
637
|
+
}
|
|
658
638
|
};
|
|
659
639
|
var getStartTime = (started, message) => {
|
|
660
640
|
if (started) {
|
|
@@ -679,7 +659,7 @@ var formatTimestamp = (timestamp, relative) => {
|
|
|
679
659
|
};
|
|
680
660
|
|
|
681
661
|
// src/components/Transcript/Transcript.tsx
|
|
682
|
-
var
|
|
662
|
+
var renderByline = (identities) => (message, index, debug = false) => {
|
|
683
663
|
if (message.sender.role === "assistant") {
|
|
684
664
|
return [
|
|
685
665
|
message.blocks.find((block) => block._tag === "transcript")?.text ?? "",
|
|
@@ -690,12 +670,13 @@ var renderMarkdown = (identities) => (message, index, debug = false) => {
|
|
|
690
670
|
const name = identity?.profile?.displayName ?? message.sender.contact?.target?.fullName ?? message.sender.name ?? message.sender.email ?? message.sender.identityDid;
|
|
691
671
|
const blocks = message.blocks.filter((block) => block._tag === "transcript");
|
|
692
672
|
return [
|
|
673
|
+
// TODO(thure): Use an XML tag with the bits needed here.
|
|
693
674
|
`###### ${name}` + (debug ? ` [${index}]:${message.id}` : ""),
|
|
694
675
|
blocks.map((block) => block.text.trim()).join(" "),
|
|
695
676
|
""
|
|
696
677
|
];
|
|
697
678
|
};
|
|
698
|
-
var
|
|
679
|
+
var TranscriptView = ({ classNames, space, transcript: object, model }) => {
|
|
699
680
|
var _effect = _useSignals();
|
|
700
681
|
try {
|
|
701
682
|
const { themeMode } = useThemeContext();
|
|
@@ -707,25 +688,18 @@ var Transcript = ({ classNames, transcript: object, space, model, attendableId,
|
|
|
707
688
|
lineWrapping: true,
|
|
708
689
|
search: true
|
|
709
690
|
}),
|
|
710
|
-
createMarkdownExtensions(
|
|
711
|
-
themeMode
|
|
712
|
-
}),
|
|
691
|
+
createMarkdownExtensions(),
|
|
713
692
|
createThemeExtensions({
|
|
714
693
|
themeMode
|
|
715
694
|
}),
|
|
716
695
|
decorateMarkdown(),
|
|
717
|
-
|
|
696
|
+
preview(),
|
|
718
697
|
transcript({
|
|
719
698
|
model,
|
|
720
|
-
started: object?.started ? new Date(object.started) : void 0
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
label: "Scroll to bottom",
|
|
725
|
-
onClick
|
|
726
|
-
}))
|
|
727
|
-
})
|
|
728
|
-
].filter(isNotFalsy)
|
|
699
|
+
started: object?.started ? new Date(object.started) : void 0
|
|
700
|
+
}),
|
|
701
|
+
autoScroll()
|
|
702
|
+
].filter(isTruthy)
|
|
729
703
|
};
|
|
730
704
|
}, [
|
|
731
705
|
space,
|
|
@@ -733,7 +707,7 @@ var Transcript = ({ classNames, transcript: object, space, model, attendableId,
|
|
|
733
707
|
]);
|
|
734
708
|
return /* @__PURE__ */ React.createElement("div", {
|
|
735
709
|
ref: parentRef,
|
|
736
|
-
className: mx("flex grow overflow-hidden",
|
|
710
|
+
className: mx("flex grow overflow-hidden container-max-width", classNames),
|
|
737
711
|
"data-popover-collision-boundary": true
|
|
738
712
|
});
|
|
739
713
|
} finally {
|
|
@@ -751,10 +725,8 @@ var TranscriptionContainer = ({ transcript: transcript2 }) => {
|
|
|
751
725
|
const queue = useQueue(transcript2.queue.dxn, {
|
|
752
726
|
pollInterval: 1e3
|
|
753
727
|
});
|
|
754
|
-
const model = useQueueModelAdapter(
|
|
755
|
-
return /* @__PURE__ */ React2.createElement(StackItem.Content, {
|
|
756
|
-
classNames: "container-max-width pli-2"
|
|
757
|
-
}, /* @__PURE__ */ React2.createElement(Transcript, {
|
|
728
|
+
const model = useQueueModelAdapter(renderByline(members), queue);
|
|
729
|
+
return /* @__PURE__ */ React2.createElement(StackItem.Content, null, /* @__PURE__ */ React2.createElement(TranscriptView, {
|
|
758
730
|
attendableId,
|
|
759
731
|
space,
|
|
760
732
|
model,
|
|
@@ -767,8 +739,8 @@ var TranscriptionContainer = ({ transcript: transcript2 }) => {
|
|
|
767
739
|
var TranscriptContainer_default = TranscriptionContainer;
|
|
768
740
|
|
|
769
741
|
export {
|
|
770
|
-
|
|
771
|
-
|
|
742
|
+
renderByline,
|
|
743
|
+
TranscriptView,
|
|
772
744
|
useAudioFile,
|
|
773
745
|
useAudioTrack,
|
|
774
746
|
useQueueModelAdapter,
|
|
@@ -776,8 +748,9 @@ export {
|
|
|
776
748
|
useVoiceInput,
|
|
777
749
|
TranscriptionContainer,
|
|
778
750
|
TranscriptContainer_default,
|
|
751
|
+
BlueprintDefinition,
|
|
779
752
|
IntentResolver,
|
|
780
753
|
ReactSurface,
|
|
781
754
|
Transcriber
|
|
782
755
|
};
|
|
783
|
-
//# sourceMappingURL=chunk-
|
|
756
|
+
//# sourceMappingURL=chunk-PEZRQYKO.mjs.map
|