@dxos/plugin-transcription 0.8.2-main.12df754 → 0.8.2-main.36232bc
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-4D4BHE7G.mjs → TranscriptContainer-2VFHUHLE.mjs} +3 -3
- package/dist/lib/browser/app-graph-builder-TDP6PYV6.mjs +350 -0
- package/dist/lib/browser/app-graph-builder-TDP6PYV6.mjs.map +7 -0
- package/dist/lib/browser/{chunk-DR3NBV6Q.mjs → chunk-KSUYWWIU.mjs} +105 -78
- package/dist/lib/browser/chunk-KSUYWWIU.mjs.map +7 -0
- package/dist/lib/browser/{chunk-5BE6RTNC.mjs → chunk-LTIQFX4W.mjs} +1 -1
- package/dist/lib/browser/{chunk-5BE6RTNC.mjs.map → chunk-LTIQFX4W.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-RHHJZQPM.mjs → chunk-NFVDICSJ.mjs} +133 -116
- package/dist/lib/browser/chunk-NFVDICSJ.mjs.map +7 -0
- package/dist/lib/browser/chunk-O6RY7FNK.mjs +27 -0
- package/dist/lib/browser/chunk-O6RY7FNK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-5Q3R53U3.mjs → chunk-YRWBY6UK.mjs} +9 -21
- package/dist/lib/browser/chunk-YRWBY6UK.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +29 -17
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-ZQQEH27F.mjs → intent-resolver-ZWKYRFE7.mjs} +4 -4
- package/dist/lib/browser/{intent-resolver-ZQQEH27F.mjs.map → intent-resolver-ZWKYRFE7.mjs.map} +2 -2
- package/dist/lib/browser/{meeting-transcription-state-5D52VTHU.mjs → meeting-transcription-state-MNA2XROE.mjs} +2 -2
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-HETJ5XY6.mjs → react-surface-F32UNCKZ.mjs} +18 -7
- package/dist/lib/browser/react-surface-F32UNCKZ.mjs.map +7 -0
- package/dist/lib/browser/settings-6YAHKVKX.mjs +24 -0
- package/dist/lib/browser/settings-6YAHKVKX.mjs.map +7 -0
- package/dist/lib/browser/{transcriber-SMRLU2KY.mjs → transcriber-MSBS4VBI.mjs} +4 -4
- package/dist/lib/browser/types/index.mjs +3 -3
- package/dist/lib/node/{TranscriptContainer-ZWP6UKY6.cjs → TranscriptContainer-E2D7PKO3.cjs} +8 -8
- package/dist/lib/node/{TranscriptContainer-ZWP6UKY6.cjs.map → TranscriptContainer-E2D7PKO3.cjs.map} +2 -2
- package/dist/lib/node/app-graph-builder-W4VDMVGV.cjs +351 -0
- package/dist/lib/node/app-graph-builder-W4VDMVGV.cjs.map +7 -0
- package/dist/lib/node/{chunk-LA73IHCB.cjs → chunk-7XIIUVN3.cjs} +108 -80
- package/dist/lib/node/chunk-7XIIUVN3.cjs.map +7 -0
- package/dist/lib/node/{chunk-3QEJ5EBO.cjs → chunk-IXU57SCA.cjs} +10 -22
- package/dist/lib/node/chunk-IXU57SCA.cjs.map +7 -0
- package/dist/lib/node/{chunk-HYGDHS6X.cjs → chunk-JUGOXWES.cjs} +4 -4
- package/dist/lib/node/{chunk-HYGDHS6X.cjs.map → chunk-JUGOXWES.cjs.map} +1 -1
- package/dist/lib/node/{chunk-KO6MKCED.cjs → chunk-NBC6V3M2.cjs} +136 -118
- package/dist/lib/node/chunk-NBC6V3M2.cjs.map +7 -0
- package/dist/lib/node/{chunk-WXG4Z2EZ.cjs → chunk-TJMZ26GS.cjs} +23 -8
- package/dist/lib/node/chunk-TJMZ26GS.cjs.map +7 -0
- package/dist/lib/node/index.cjs +46 -34
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/{intent-resolver-VY3XWYAA.cjs → intent-resolver-RM4JOCDV.cjs} +8 -8
- package/dist/lib/node/{intent-resolver-VY3XWYAA.cjs.map → intent-resolver-RM4JOCDV.cjs.map} +2 -2
- package/dist/lib/node/{meeting-transcription-state-OYWCY5XE.cjs → meeting-transcription-state-5XLTMWPA.cjs} +6 -6
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-M2JQIIDY.cjs → react-surface-YQHBGPOC.cjs} +20 -11
- package/dist/lib/node/react-surface-YQHBGPOC.cjs.map +7 -0
- package/dist/lib/node/settings-ZMB4XRWS.cjs +38 -0
- package/dist/lib/node/settings-ZMB4XRWS.cjs.map +7 -0
- package/dist/lib/node/{transcriber-E6AAB4SU.cjs → transcriber-55OE4X6I.cjs} +10 -10
- package/dist/lib/node/types/index.cjs +8 -8
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/lib/node-esm/{TranscriptContainer-3HJ752CP.mjs → TranscriptContainer-5N3BSK2S.mjs} +3 -3
- package/dist/lib/node-esm/app-graph-builder-DDDVKUHS.mjs +351 -0
- package/dist/lib/node-esm/app-graph-builder-DDDVKUHS.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SDMGJZLN.mjs → chunk-4RMJO6QQ.mjs} +133 -116
- package/dist/lib/node-esm/chunk-4RMJO6QQ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-YXZOLOFT.mjs → chunk-5E2MR5XK.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-YXZOLOFT.mjs.map → chunk-5E2MR5XK.mjs.map} +1 -1
- package/dist/lib/node-esm/chunk-HZBSWUJH.mjs +28 -0
- package/dist/lib/node-esm/chunk-HZBSWUJH.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-54HDN33F.mjs → chunk-OS2ITZUL.mjs} +9 -21
- package/dist/lib/node-esm/chunk-OS2ITZUL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-K3R3YK3S.mjs → chunk-UWF6LM27.mjs} +105 -78
- package/dist/lib/node-esm/chunk-UWF6LM27.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +29 -17
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-FCTNJPWY.mjs → intent-resolver-HDRFXMKP.mjs} +4 -4
- package/dist/lib/node-esm/{intent-resolver-FCTNJPWY.mjs.map → intent-resolver-HDRFXMKP.mjs.map} +2 -2
- package/dist/lib/node-esm/{meeting-transcription-state-XMZJ45P4.mjs → meeting-transcription-state-3WOZ52BQ.mjs} +2 -2
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-PXFSIM6V.mjs → react-surface-DRDNXTFZ.mjs} +18 -7
- package/dist/lib/node-esm/react-surface-DRDNXTFZ.mjs.map +7 -0
- package/dist/lib/node-esm/settings-I35TVDUG.mjs +25 -0
- package/dist/lib/node-esm/settings-I35TVDUG.mjs.map +7 -0
- package/dist/lib/node-esm/{transcriber-REAGRCPY.mjs → transcriber-HH7EMCGH.mjs} +4 -4
- package/dist/lib/node-esm/types/index.mjs +3 -3
- package/dist/types/src/TranscriptionPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -0
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +4 -0
- package/dist/types/src/capabilities/settings.d.ts.map +1 -0
- package/dist/types/src/components/Transcript/Transcript.d.ts +6 -4
- package/dist/types/src/components/Transcript/Transcript.d.ts.map +1 -1
- package/dist/types/src/components/Transcript/Transcript.stories.d.ts +8 -4
- package/dist/types/src/components/Transcript/Transcript.stories.d.ts.map +1 -1
- package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts +27 -0
- package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts.map +1 -0
- package/dist/types/src/components/Transcript/transcript-extension.d.ts +4 -4
- package/dist/types/src/components/Transcript/transcript-extension.d.ts.map +1 -1
- package/dist/types/src/components/TranscriptContainer.d.ts.map +1 -1
- package/dist/types/src/components/TranscriptionSettings/TranscriptionSettings.d.ts +6 -0
- package/dist/types/src/components/TranscriptionSettings/TranscriptionSettings.d.ts.map +1 -0
- package/dist/types/src/components/TranscriptionSettings/index.d.ts +2 -0
- package/dist/types/src/components/TranscriptionSettings/index.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +1 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/components/transcription.stories.d.ts +6 -3
- package/dist/types/src/components/transcription.stories.d.ts.map +1 -1
- package/dist/types/src/entity-extraction/entity-extraction.d.ts +33 -7
- package/dist/types/src/entity-extraction/entity-extraction.d.ts.map +1 -1
- package/dist/types/src/hooks/useQueueModelAdapter.d.ts +2 -2
- package/dist/types/src/hooks/useQueueModelAdapter.d.ts.map +1 -1
- package/dist/types/src/model/model.d.ts +23 -23
- package/dist/types/src/model/model.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +2 -0
- package/dist/types/src/testing/index.d.ts.map +1 -0
- package/dist/types/src/testing/testing.d.ts +39 -0
- package/dist/types/src/testing/testing.d.ts.map +1 -0
- package/dist/types/src/transcriber/transcriber.d.ts +2 -2
- package/dist/types/src/transcriber/transcriber.d.ts.map +1 -1
- package/dist/types/src/transcriber/transcription-manager.d.ts +17 -15
- package/dist/types/src/transcriber/transcription-manager.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +3 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +0 -21
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +5 -1
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/package.json +48 -45
- package/src/TranscriptionPlugin.tsx +29 -12
- package/src/capabilities/app-graph-builder.ts +99 -29
- package/src/capabilities/capabilities.ts +1 -1
- package/src/capabilities/index.ts +1 -0
- package/src/capabilities/intent-resolver.ts +2 -2
- package/src/capabilities/react-surface.tsx +12 -4
- package/src/capabilities/settings.ts +20 -0
- package/src/components/Transcript/Transcript.stories.tsx +71 -35
- package/src/components/Transcript/Transcript.tsx +30 -29
- package/src/components/Transcript/deprecated/{Transcript.tsx → OldTranscript.tsx} +24 -1
- package/src/components/Transcript/transcript-extension.ts +20 -17
- package/src/components/TranscriptContainer.tsx +6 -4
- package/src/components/TranscriptionSettings/TranscriptionSettings.tsx +26 -0
- package/src/components/TranscriptionSettings/index.ts +5 -0
- package/src/components/index.ts +1 -0
- package/src/components/transcription.stories.tsx +77 -29
- package/src/entity-extraction/entity-extraction.test.ts +55 -9
- package/src/entity-extraction/entity-extraction.ts +105 -55
- package/src/entity-extraction/system-prompt.tpl +38 -9
- package/src/hooks/useQueueModelAdapter.ts +44 -11
- package/src/model/model.test.ts +85 -43
- package/src/model/model.ts +59 -59
- package/src/testing/index.ts +5 -0
- package/src/testing/testing.ts +208 -0
- package/src/transcriber/transcriber.browser.test.ts +3 -3
- package/src/transcriber/transcriber.ts +16 -10
- package/src/transcriber/transcription-manager.ts +66 -57
- package/src/translations.ts +2 -0
- package/src/types/schema.ts +1 -24
- package/src/types/types.ts +11 -3
- package/dist/lib/browser/app-graph-builder-I4SSIQMW.mjs +0 -168
- package/dist/lib/browser/app-graph-builder-I4SSIQMW.mjs.map +0 -7
- package/dist/lib/browser/chunk-5Q3R53U3.mjs.map +0 -7
- package/dist/lib/browser/chunk-DR3NBV6Q.mjs.map +0 -7
- package/dist/lib/browser/chunk-GI5LZ4SV.mjs +0 -8
- package/dist/lib/browser/chunk-GI5LZ4SV.mjs.map +0 -7
- package/dist/lib/browser/chunk-RHHJZQPM.mjs.map +0 -7
- package/dist/lib/browser/react-surface-HETJ5XY6.mjs.map +0 -7
- package/dist/lib/node/app-graph-builder-WWC4WNTG.cjs +0 -177
- package/dist/lib/node/app-graph-builder-WWC4WNTG.cjs.map +0 -7
- package/dist/lib/node/chunk-3QEJ5EBO.cjs.map +0 -7
- package/dist/lib/node/chunk-KO6MKCED.cjs.map +0 -7
- package/dist/lib/node/chunk-LA73IHCB.cjs.map +0 -7
- package/dist/lib/node/chunk-WXG4Z2EZ.cjs.map +0 -7
- package/dist/lib/node/react-surface-M2JQIIDY.cjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-PPJQAFSI.mjs +0 -169
- package/dist/lib/node-esm/app-graph-builder-PPJQAFSI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-54HDN33F.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-K3R3YK3S.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SDMGJZLN.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XY22OP6H.mjs +0 -10
- package/dist/lib/node-esm/chunk-XY22OP6H.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-PXFSIM6V.mjs.map +0 -7
- package/dist/types/src/components/Transcript/deprecated/Transcript.d.ts +0 -13
- package/dist/types/src/components/Transcript/deprecated/Transcript.d.ts.map +0 -1
- package/dist/types/src/components/Transcript/testings.d.ts +0 -51
- package/dist/types/src/components/Transcript/testings.d.ts.map +0 -1
- package/dist/types/src/testing/test-data.d.ts +0 -73
- package/dist/types/src/testing/test-data.d.ts.map +0 -1
- package/src/components/Transcript/testings.ts +0 -182
- package/src/testing/test-data.ts +0 -314
- /package/dist/lib/browser/{TranscriptContainer-4D4BHE7G.mjs.map → TranscriptContainer-2VFHUHLE.mjs.map} +0 -0
- /package/dist/lib/browser/{meeting-transcription-state-5D52VTHU.mjs.map → meeting-transcription-state-MNA2XROE.mjs.map} +0 -0
- /package/dist/lib/browser/{transcriber-SMRLU2KY.mjs.map → transcriber-MSBS4VBI.mjs.map} +0 -0
- /package/dist/lib/node/{meeting-transcription-state-OYWCY5XE.cjs.map → meeting-transcription-state-5XLTMWPA.cjs.map} +0 -0
- /package/dist/lib/node/{transcriber-E6AAB4SU.cjs.map → transcriber-55OE4X6I.cjs.map} +0 -0
- /package/dist/lib/node-esm/{TranscriptContainer-3HJ752CP.mjs.map → TranscriptContainer-5N3BSK2S.mjs.map} +0 -0
- /package/dist/lib/node-esm/{meeting-transcription-state-XMZJ45P4.mjs.map → meeting-transcription-state-3WOZ52BQ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{transcriber-REAGRCPY.mjs.map → transcriber-HH7EMCGH.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/types/schema.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/types/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAO,CAAC,EAAe,MAAM,mBAAmB,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;IAO3B;;OAEG;;EAGH,CAAC;;;;;;;;;;;;AAEH,qBAAa,cAAe,SAAQ,mBAGT;CAAG;AAI9B;;;GAGG;AACH,QAAA,MAAM,gBAAgB;;EAEpB,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -10,7 +10,7 @@ export declare namespace TranscriptionAction {
|
|
|
10
10
|
} & {
|
|
11
11
|
input: S.Struct<{
|
|
12
12
|
name: S.optional<typeof S.String>;
|
|
13
|
-
spaceId:
|
|
13
|
+
spaceId: S.Schema<import("@dxos/keys").SpaceId, string, never>;
|
|
14
14
|
}>;
|
|
15
15
|
output: S.Struct<{
|
|
16
16
|
object: typeof TranscriptType;
|
|
@@ -21,4 +21,8 @@ export declare namespace TranscriptionAction {
|
|
|
21
21
|
export {};
|
|
22
22
|
}
|
|
23
23
|
export declare const isTranscript: (object: unknown) => object is typeof TranscriptType;
|
|
24
|
+
export declare const TranscriptionSettingsSchema: S.mutable<S.Struct<{
|
|
25
|
+
entityExtraction: S.PropertySignature<"?:", boolean | undefined, never, "?:", boolean | undefined, true, never>;
|
|
26
|
+
}>>;
|
|
27
|
+
export type TranscriptionSettingsProps = S.Schema.Type<typeof TranscriptionSettingsSchema>;
|
|
24
28
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,CAAC,EAAgB,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK1C;;GAEG;AAEH,eAAO,MAAM,iBAAiB,2CAA2C,CAAC;AAE1E,yBAAiB,mBAAmB,CAAC;;;;;;;;;;;;IAGnC,MAAM,OAAO,MAAO,SAAQ,WAQ1B;KAAG;;CACN;AAED,eAAO,MAAM,YAAY,WAAY,OAAO,KAAG,MAAM,IAAI,OAAO,cAE/D,CAAC;AAGF,eAAO,MAAM,2BAA2B;;GAIvC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-transcription",
|
|
3
|
-
"version": "0.8.2-main.
|
|
3
|
+
"version": "0.8.2-main.36232bc",
|
|
4
4
|
"description": "Voice transcription.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -44,60 +44,63 @@
|
|
|
44
44
|
"react-router-dom": "^6.4.0",
|
|
45
45
|
"react-use": "^17.5.1",
|
|
46
46
|
"wavefile": "^11.0.0",
|
|
47
|
-
"@dxos/
|
|
48
|
-
"@dxos/
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/
|
|
54
|
-
"@dxos/debug": "0.8.2-main.
|
|
55
|
-
"@dxos/echo-db": "0.8.2-main.
|
|
56
|
-
"@dxos/
|
|
57
|
-
"@dxos/
|
|
58
|
-
"@dxos/
|
|
59
|
-
"@dxos/
|
|
60
|
-
"@dxos/
|
|
61
|
-
"@dxos/log": "0.8.2-main.
|
|
62
|
-
"@dxos/plugin-client": "0.8.2-main.
|
|
63
|
-
"@dxos/
|
|
64
|
-
"@dxos/plugin-graph": "0.8.2-main.
|
|
65
|
-
"@dxos/
|
|
66
|
-
"@dxos/
|
|
67
|
-
"@dxos/plugin-meeting": "0.8.2-main.
|
|
68
|
-
"@dxos/
|
|
69
|
-
"@dxos/react-
|
|
70
|
-
"@dxos/plugin-space": "0.8.2-main.
|
|
71
|
-
"@dxos/react-ui-
|
|
72
|
-
"@dxos/react-ui-
|
|
73
|
-
"@dxos/react-ui-
|
|
74
|
-
"@dxos/react-
|
|
75
|
-
"@dxos/react-ui-
|
|
76
|
-
"@dxos/
|
|
77
|
-
"@dxos/
|
|
78
|
-
"@dxos/
|
|
47
|
+
"@dxos/artifact": "0.8.2-main.36232bc",
|
|
48
|
+
"@dxos/async": "0.8.2-main.36232bc",
|
|
49
|
+
"@dxos/client": "0.8.2-main.36232bc",
|
|
50
|
+
"@dxos/assistant": "0.8.2-main.36232bc",
|
|
51
|
+
"@dxos/app-framework": "0.8.2-main.36232bc",
|
|
52
|
+
"@dxos/context": "0.8.2-main.36232bc",
|
|
53
|
+
"@dxos/codec-protobuf": "0.8.2-main.36232bc",
|
|
54
|
+
"@dxos/debug": "0.8.2-main.36232bc",
|
|
55
|
+
"@dxos/echo-db": "0.8.2-main.36232bc",
|
|
56
|
+
"@dxos/echo-schema": "0.8.2-main.36232bc",
|
|
57
|
+
"@dxos/keys": "0.8.2-main.36232bc",
|
|
58
|
+
"@dxos/display-name": "0.8.2-main.36232bc",
|
|
59
|
+
"@dxos/invariant": "0.8.2-main.36232bc",
|
|
60
|
+
"@dxos/live-object": "0.8.2-main.36232bc",
|
|
61
|
+
"@dxos/log": "0.8.2-main.36232bc",
|
|
62
|
+
"@dxos/plugin-client": "0.8.2-main.36232bc",
|
|
63
|
+
"@dxos/local-storage": "0.8.2-main.36232bc",
|
|
64
|
+
"@dxos/plugin-graph": "0.8.2-main.36232bc",
|
|
65
|
+
"@dxos/plugin-markdown": "0.8.2-main.36232bc",
|
|
66
|
+
"@dxos/plugin-deck": "0.8.2-main.36232bc",
|
|
67
|
+
"@dxos/plugin-meeting": "0.8.2-main.36232bc",
|
|
68
|
+
"@dxos/protocols": "0.8.2-main.36232bc",
|
|
69
|
+
"@dxos/react-client": "0.8.2-main.36232bc",
|
|
70
|
+
"@dxos/plugin-space": "0.8.2-main.36232bc",
|
|
71
|
+
"@dxos/react-ui-attention": "0.8.2-main.36232bc",
|
|
72
|
+
"@dxos/react-ui-components": "0.8.2-main.36232bc",
|
|
73
|
+
"@dxos/react-ui-form": "0.8.2-main.36232bc",
|
|
74
|
+
"@dxos/react-edge-client": "0.8.2-main.36232bc",
|
|
75
|
+
"@dxos/react-ui-editor": "0.8.2-main.36232bc",
|
|
76
|
+
"@dxos/react-ui-sfx": "0.8.2-main.36232bc",
|
|
77
|
+
"@dxos/react-ui-grid": "0.8.2-main.36232bc",
|
|
78
|
+
"@dxos/react-ui-stack": "0.8.2-main.36232bc",
|
|
79
|
+
"@dxos/schema": "0.8.2-main.36232bc",
|
|
80
|
+
"@dxos/tracing": "0.8.2-main.36232bc",
|
|
81
|
+
"@dxos/util": "0.8.2-main.36232bc"
|
|
79
82
|
},
|
|
80
83
|
"devDependencies": {
|
|
81
84
|
"@types/react": "~18.2.0",
|
|
82
85
|
"react": "~18.2.0",
|
|
83
86
|
"react-dom": "~18.2.0",
|
|
84
87
|
"tailwindcss": "~3.4.1",
|
|
85
|
-
"@dxos/plugin-preview": "0.8.2-main.
|
|
86
|
-
"@dxos/plugin-storybook-layout": "0.8.2-main.
|
|
87
|
-
"@dxos/plugin-theme": "0.8.2-main.
|
|
88
|
-
"@dxos/random": "0.8.2-main.
|
|
89
|
-
"@dxos/react-ui": "0.8.2-main.
|
|
90
|
-
"@dxos/react-ui
|
|
91
|
-
"@dxos/react-ui-syntax-highlighter": "0.8.2-main.
|
|
92
|
-
"@dxos/
|
|
93
|
-
"@dxos/test-utils": "0.8.2-main.
|
|
94
|
-
"@dxos/
|
|
88
|
+
"@dxos/plugin-preview": "0.8.2-main.36232bc",
|
|
89
|
+
"@dxos/plugin-storybook-layout": "0.8.2-main.36232bc",
|
|
90
|
+
"@dxos/plugin-theme": "0.8.2-main.36232bc",
|
|
91
|
+
"@dxos/random": "0.8.2-main.36232bc",
|
|
92
|
+
"@dxos/react-ui-form": "0.8.2-main.36232bc",
|
|
93
|
+
"@dxos/react-ui": "0.8.2-main.36232bc",
|
|
94
|
+
"@dxos/react-ui-syntax-highlighter": "0.8.2-main.36232bc",
|
|
95
|
+
"@dxos/storybook-utils": "0.8.2-main.36232bc",
|
|
96
|
+
"@dxos/test-utils": "0.8.2-main.36232bc",
|
|
97
|
+
"@dxos/react-ui-theme": "0.8.2-main.36232bc"
|
|
95
98
|
},
|
|
96
99
|
"optionalDependencies": {
|
|
97
100
|
"react": "~18.2.0",
|
|
98
101
|
"react-dom": "~18.2.0",
|
|
99
|
-
"@dxos/react-ui": "0.8.2-main.
|
|
100
|
-
"@dxos/react-ui-theme": "0.8.2-main.
|
|
102
|
+
"@dxos/react-ui": "0.8.2-main.36232bc",
|
|
103
|
+
"@dxos/react-ui-theme": "0.8.2-main.36232bc"
|
|
101
104
|
},
|
|
102
105
|
"publishConfig": {
|
|
103
106
|
"access": "public"
|
|
@@ -6,11 +6,21 @@ import { Capabilities, Events, contributes, defineModule, definePlugin } from '@
|
|
|
6
6
|
import { QueueImpl } from '@dxos/echo-db';
|
|
7
7
|
import { isInstanceOf } from '@dxos/echo-schema';
|
|
8
8
|
import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
|
|
9
|
+
import { getSpace } from '@dxos/react-client/echo';
|
|
10
|
+
import { MessageType } from '@dxos/schema';
|
|
9
11
|
|
|
10
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
AppGraphBuilder,
|
|
14
|
+
IntentResolver,
|
|
15
|
+
MeetingTranscriptionState,
|
|
16
|
+
ReactSurface,
|
|
17
|
+
Transcriber,
|
|
18
|
+
Settings,
|
|
19
|
+
} from './capabilities';
|
|
20
|
+
import { renderMarkdown } from './components';
|
|
11
21
|
import { meta } from './meta';
|
|
12
22
|
import translations from './translations';
|
|
13
|
-
import {
|
|
23
|
+
import { TranscriptType } from './types';
|
|
14
24
|
|
|
15
25
|
export const TranscriptionPlugin = () =>
|
|
16
26
|
definePlugin(meta, [
|
|
@@ -20,14 +30,9 @@ export const TranscriptionPlugin = () =>
|
|
|
20
30
|
activate: () => contributes(Capabilities.Translations, translations),
|
|
21
31
|
}),
|
|
22
32
|
defineModule({
|
|
23
|
-
id: `${meta.id}/module/
|
|
24
|
-
activatesOn: Events.
|
|
25
|
-
activate:
|
|
26
|
-
}),
|
|
27
|
-
defineModule({
|
|
28
|
-
id: `${meta.id}/module/meeting-transcription-state`,
|
|
29
|
-
activatesOn: Events.SetupAppGraph,
|
|
30
|
-
activate: MeetingTranscriptionState,
|
|
33
|
+
id: `${meta.id}/module/settings`,
|
|
34
|
+
activatesOn: Events.SetupSettings,
|
|
35
|
+
activate: Settings,
|
|
31
36
|
}),
|
|
32
37
|
defineModule({
|
|
33
38
|
id: `${meta.id}/module/metadata`,
|
|
@@ -40,11 +45,13 @@ export const TranscriptionPlugin = () =>
|
|
|
40
45
|
// TODO(wittjosiah): Factor out. Artifact? Separate capability?
|
|
41
46
|
getTextContent: async (transcript: TranscriptType) => {
|
|
42
47
|
const client = context.requestCapability(ClientCapabilities.Client);
|
|
48
|
+
const space = getSpace(transcript);
|
|
49
|
+
const members = space?.members.get().map((member) => member.identity) ?? [];
|
|
43
50
|
const queue = new QueueImpl(client.edge, transcript.queue.dxn);
|
|
44
51
|
await queue.refresh();
|
|
45
52
|
const content = queue.items
|
|
46
|
-
.filter((
|
|
47
|
-
.
|
|
53
|
+
.filter((message) => isInstanceOf(MessageType, message))
|
|
54
|
+
.flatMap((message, index) => renderMarkdown(members)(message, index))
|
|
48
55
|
.join('\n\n');
|
|
49
56
|
return content;
|
|
50
57
|
},
|
|
@@ -71,4 +78,14 @@ export const TranscriptionPlugin = () =>
|
|
|
71
78
|
activatesOn: Events.SetupAppGraph,
|
|
72
79
|
activate: AppGraphBuilder,
|
|
73
80
|
}),
|
|
81
|
+
defineModule({
|
|
82
|
+
id: `${meta.id}/module/transcription`,
|
|
83
|
+
activatesOn: Events.SetupAppGraph,
|
|
84
|
+
activate: Transcriber,
|
|
85
|
+
}),
|
|
86
|
+
defineModule({
|
|
87
|
+
id: `${meta.id}/module/meeting-transcription-state`,
|
|
88
|
+
activatesOn: Events.SetupAppGraph,
|
|
89
|
+
activate: MeetingTranscriptionState,
|
|
90
|
+
}),
|
|
74
91
|
]);
|
|
@@ -2,24 +2,31 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import type { Schema } from 'effect';
|
|
6
|
+
|
|
5
7
|
import { Capabilities, contributes, createIntent, type PluginsContext } from '@dxos/app-framework';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
8
|
+
import { AIServiceEdgeClient, type AIServiceClient } from '@dxos/assistant';
|
|
9
|
+
import { AI_SERVICE_ENDPOINT, Contact, Organization } from '@dxos/assistant/testing';
|
|
10
|
+
import { Filter, fullyQualifiedId, getSpace, makeRef, type Space } from '@dxos/client/echo';
|
|
11
|
+
import { getSchemaTypename, isInstanceOf, type BaseEchoObject } from '@dxos/echo-schema';
|
|
9
12
|
import { invariant } from '@dxos/invariant';
|
|
13
|
+
import { DXN } from '@dxos/keys';
|
|
14
|
+
import { log } from '@dxos/log';
|
|
10
15
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
11
16
|
import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';
|
|
12
17
|
import { createExtension, type Node } from '@dxos/plugin-graph';
|
|
18
|
+
import { DocumentType } from '@dxos/plugin-markdown/types';
|
|
13
19
|
import { MeetingCapabilities, type CallState, type MediaState } from '@dxos/plugin-meeting';
|
|
14
|
-
import { MeetingType } from '@dxos/plugin-meeting/types';
|
|
20
|
+
import { MeetingType, type MeetingCallProperties } from '@dxos/plugin-meeting/types';
|
|
15
21
|
import { type buf } from '@dxos/protocols/buf';
|
|
16
22
|
import { type TranscriptionPayloadSchema } from '@dxos/protocols/buf/dxos/edge/calls_pb';
|
|
17
|
-
import {
|
|
23
|
+
import type { MessageType } from '@dxos/schema';
|
|
18
24
|
|
|
19
25
|
import { TranscriptionCapabilities } from './capabilities';
|
|
26
|
+
import { processTranscriptMessage } from '../entity-extraction';
|
|
20
27
|
import { TRANSCRIPTION_PLUGIN } from '../meta';
|
|
21
28
|
import { TranscriptionManager } from '../transcriber';
|
|
22
|
-
import { TranscriptionAction, TranscriptType } from '../types';
|
|
29
|
+
import { TranscriptionAction, type TranscriptionSettingsProps, TranscriptType } from '../types';
|
|
23
30
|
|
|
24
31
|
// TODO(wittjosiah): Factor out.
|
|
25
32
|
// TODO(wittjosiah): Can we stop using protobuf for this?
|
|
@@ -49,8 +56,7 @@ export default (context: PluginsContext) =>
|
|
|
49
56
|
contributes(Capabilities.AppGraphBuilder, [
|
|
50
57
|
createExtension({
|
|
51
58
|
id: `${TRANSCRIPTION_PLUGIN}/meeting-transcript`,
|
|
52
|
-
filter: (node): node is Node<MeetingType> =>
|
|
53
|
-
isInstanceOf(MeetingType, node.data) && node.type !== PLANK_COMPANION_TYPE,
|
|
59
|
+
filter: (node): node is Node<MeetingType> => isInstanceOf(MeetingType, node.data),
|
|
54
60
|
actions: ({ node }) => {
|
|
55
61
|
const meeting = node.data;
|
|
56
62
|
const state = context.requestCapability(TranscriptionCapabilities.MeetingTranscriptionState);
|
|
@@ -61,14 +67,13 @@ export default (context: PluginsContext) =>
|
|
|
61
67
|
// NOTE: We are not saving the state of the transcription manager here.
|
|
62
68
|
// We expect the state to be updated through `onCallStateUpdated` once it is propagated through Swarm.
|
|
63
69
|
// This is done to avoid race conditions and to not handle optimistic updates.
|
|
64
|
-
|
|
65
70
|
const transcript = await getMeetingTranscript(context, meeting);
|
|
66
71
|
invariant(transcript, 'Failed to create transcript');
|
|
67
72
|
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
enabled: !state.enabled,
|
|
73
|
+
const callManager = context.requestCapability(MeetingCapabilities.CallManager);
|
|
74
|
+
callManager.setActivity(getSchemaTypename(TranscriptType)!, {
|
|
71
75
|
queueDxn: transcript.queue.dxn.toString(),
|
|
76
|
+
enabled: !state.enabled,
|
|
72
77
|
});
|
|
73
78
|
},
|
|
74
79
|
properties: {
|
|
@@ -86,6 +91,14 @@ export default (context: PluginsContext) =>
|
|
|
86
91
|
const meeting = node.data;
|
|
87
92
|
const client = context.requestCapability(ClientCapabilities.Client);
|
|
88
93
|
const state = context.requestCapability(TranscriptionCapabilities.MeetingTranscriptionState);
|
|
94
|
+
const settings = context
|
|
95
|
+
.requestCapability(Capabilities.SettingsStore)
|
|
96
|
+
.getStore<TranscriptionSettingsProps>(TRANSCRIPTION_PLUGIN)!.value;
|
|
97
|
+
|
|
98
|
+
// TODO(dmaretskyi): Request via capability.
|
|
99
|
+
const aiClient: AIServiceClient | undefined = new AIServiceEdgeClient({
|
|
100
|
+
endpoint: AI_SERVICE_ENDPOINT.REMOTE,
|
|
101
|
+
});
|
|
89
102
|
|
|
90
103
|
return [
|
|
91
104
|
{
|
|
@@ -95,29 +108,45 @@ export default (context: PluginsContext) =>
|
|
|
95
108
|
properties: {
|
|
96
109
|
label: ['transcript companion label', { ns: TRANSCRIPTION_PLUGIN }],
|
|
97
110
|
icon: 'ph--subtitles--regular',
|
|
111
|
+
position: 'hoist',
|
|
98
112
|
disposition: 'hidden',
|
|
99
113
|
schema: TranscriptType,
|
|
100
114
|
getIntent: ({ space }: { space: Space }) =>
|
|
101
115
|
createIntent(TranscriptionAction.Create, { spaceId: space.id }),
|
|
102
|
-
|
|
103
|
-
|
|
116
|
+
|
|
117
|
+
// TODO(burdon): Is this the right place to inisitalize the state? Change to a capability?
|
|
118
|
+
onJoin: async ({ meeting }: { meeting: MeetingType; roomId: string }) => {
|
|
104
119
|
const identity = client.halo.identity.get();
|
|
105
120
|
invariant(identity);
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
121
|
+
const space = getSpace(meeting);
|
|
122
|
+
invariant(space);
|
|
123
|
+
|
|
124
|
+
let messageEnricher;
|
|
125
|
+
if (aiClient && settings.entityExtraction) {
|
|
126
|
+
messageEnricher = createEntityExtractionEnricher({
|
|
127
|
+
aiClient,
|
|
128
|
+
// TODO(dmaretskyi): Have those be discovered from the schema graph or contributed by capabilities?
|
|
129
|
+
// This forced me to add a dependency on markdown plugin.
|
|
130
|
+
// This will be replaced with a vector search index anyway, so its not a big deal.
|
|
131
|
+
contextTypes: [DocumentType, Contact, Organization],
|
|
132
|
+
space,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// TODO(burdon): The TranscriptionManager singleton is part of the state and should just be updated here.
|
|
137
|
+
state.transcriptionManager = await new TranscriptionManager({
|
|
138
|
+
edgeClient: client.edge,
|
|
139
|
+
messageEnricher,
|
|
140
|
+
})
|
|
141
|
+
.setIdentityDid(identity.did)
|
|
142
|
+
.open();
|
|
114
143
|
},
|
|
115
|
-
onLeave: () => {
|
|
116
|
-
|
|
144
|
+
onLeave: async () => {
|
|
145
|
+
await state.transcriptionManager?.close();
|
|
117
146
|
state.transcriptionManager = undefined;
|
|
118
147
|
state.enabled = false;
|
|
119
148
|
},
|
|
120
|
-
onCallStateUpdated: (callState: CallState) => {
|
|
149
|
+
onCallStateUpdated: async (callState: CallState) => {
|
|
121
150
|
const typename = getSchemaTypename(TranscriptType);
|
|
122
151
|
const transcription = typename ? callState.activities?.[typename] : undefined;
|
|
123
152
|
if (!transcription?.payload) {
|
|
@@ -126,16 +155,57 @@ export default (context: PluginsContext) =>
|
|
|
126
155
|
|
|
127
156
|
const payload: TranscriptionPayload = transcription.payload;
|
|
128
157
|
state.enabled = !!payload.enabled;
|
|
129
|
-
|
|
130
|
-
|
|
158
|
+
if (payload.queueDxn) {
|
|
159
|
+
// NOTE: Must set queue before enabling transcription.
|
|
160
|
+
state.transcriptionManager?.setQueue(DXN.parse(payload.queueDxn));
|
|
161
|
+
}
|
|
162
|
+
await state.transcriptionManager?.setEnabled(payload.enabled);
|
|
131
163
|
},
|
|
132
|
-
onMediaStateUpdated: ([mediaState, isSpeaking]: [MediaState, boolean]) => {
|
|
164
|
+
onMediaStateUpdated: async ([mediaState, isSpeaking]: [MediaState, boolean]) => {
|
|
133
165
|
void state.transcriptionManager?.setAudioTrack(mediaState.audioTrack);
|
|
134
166
|
void state.transcriptionManager?.setRecording(isSpeaking);
|
|
135
167
|
},
|
|
136
|
-
},
|
|
168
|
+
} satisfies MeetingCallProperties,
|
|
137
169
|
},
|
|
138
170
|
];
|
|
139
171
|
},
|
|
140
172
|
}),
|
|
141
173
|
]);
|
|
174
|
+
|
|
175
|
+
type EntityExtractionEnricherFactoryOptions = {
|
|
176
|
+
aiClient: AIServiceClient;
|
|
177
|
+
contextTypes: Schema.Schema.AnyNoContext[];
|
|
178
|
+
space: Space;
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
const createEntityExtractionEnricher = ({ aiClient, contextTypes, space }: EntityExtractionEnricherFactoryOptions) => {
|
|
182
|
+
return async (message: MessageType) => {
|
|
183
|
+
const { objects } = await space.db.query(Filter.or(...contextTypes.map((s) => Filter.schema(s)))).run();
|
|
184
|
+
log.info('context', { objects });
|
|
185
|
+
|
|
186
|
+
const { message: enhancedMessage, timeElapsed } = await processTranscriptMessage({
|
|
187
|
+
aiService: aiClient,
|
|
188
|
+
message,
|
|
189
|
+
context: { objects: await Promise.all(objects.map(processContextObject)) },
|
|
190
|
+
options: { timeout: ENTITY_EXTRACTOR_TIMEOUT, fallbackToRaw: true },
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
log.info('entity extraction time', { timeElapsed });
|
|
194
|
+
return enhancedMessage;
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
const processContextObject = async (object: BaseEchoObject): Promise<any> => {
|
|
199
|
+
// TODO(dmaretskyi): Documents need special processing is the content is behind a ref.
|
|
200
|
+
// TODO(dmaretskyi): Think about a way to handle this serialization with a decorator.
|
|
201
|
+
if (isInstanceOf(DocumentType, object)) {
|
|
202
|
+
return {
|
|
203
|
+
...object,
|
|
204
|
+
content: await object.content.load(),
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return object;
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
const ENTITY_EXTRACTOR_TIMEOUT = 25_000;
|
|
@@ -18,8 +18,8 @@ export namespace TranscriptionCapabilities {
|
|
|
18
18
|
export const Transcriber = defineCapability<GetTranscriber>(`${TRANSCRIPTION_PLUGIN}/capability/transcriber`);
|
|
19
19
|
|
|
20
20
|
export type MeetingTranscriptionState = Live<{
|
|
21
|
-
enabled: boolean;
|
|
22
21
|
transcriptionManager?: TranscriptionManager;
|
|
22
|
+
enabled: boolean; // TODO(burdon): Move state into TranscriptionManager.
|
|
23
23
|
}>;
|
|
24
24
|
export const MeetingTranscriptionState = defineCapability<MeetingTranscriptionState>(
|
|
25
25
|
`${TRANSCRIPTION_PLUGIN}/capability/meeting-transcription-state`,
|
|
@@ -9,5 +9,6 @@ export const IntentResolver = lazy(() => import('./intent-resolver'));
|
|
|
9
9
|
export const MeetingTranscriptionState = lazy(() => import('./meeting-transcription-state'));
|
|
10
10
|
export const ReactSurface = lazy(() => import('./react-surface'));
|
|
11
11
|
export const Transcriber = lazy(() => import('./transcriber'));
|
|
12
|
+
export const Settings = lazy(() => import('./settings'));
|
|
12
13
|
|
|
13
14
|
export * from './capabilities';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { Capabilities, contributes, createResolver, type PluginsContext } from '@dxos/app-framework';
|
|
6
6
|
import { live, refFromDXN } from '@dxos/live-object';
|
|
7
|
-
import { type SpaceId,
|
|
7
|
+
import { type SpaceId, createQueueDxn } from '@dxos/react-client/echo';
|
|
8
8
|
|
|
9
9
|
import { TranscriptionAction, TranscriptType } from '../types';
|
|
10
10
|
import { getTimeStr } from '../util';
|
|
@@ -15,7 +15,7 @@ export default (context: PluginsContext) =>
|
|
|
15
15
|
intent: TranscriptionAction.Create,
|
|
16
16
|
resolve: ({ name, spaceId }) => {
|
|
17
17
|
const transcript = live(TranscriptType, {
|
|
18
|
-
queue: refFromDXN(
|
|
18
|
+
queue: refFromDXN(createQueueDxn(spaceId as SpaceId)),
|
|
19
19
|
name: name ?? `Transcript ${getTimeStr(Date.now())}`,
|
|
20
20
|
});
|
|
21
21
|
|
|
@@ -5,15 +5,23 @@
|
|
|
5
5
|
import React from 'react';
|
|
6
6
|
|
|
7
7
|
import { Capabilities, contributes, createSurface } from '@dxos/app-framework';
|
|
8
|
+
import { SettingsStore } from '@dxos/local-storage';
|
|
8
9
|
|
|
9
|
-
import { TranscriptionContainer } from '../components';
|
|
10
|
-
import {
|
|
11
|
-
import { isTranscript, type TranscriptType } from '../types';
|
|
10
|
+
import { TranscriptionContainer, TranscriptionSettings } from '../components';
|
|
11
|
+
import { meta } from '../meta';
|
|
12
|
+
import { isTranscript, type TranscriptionSettingsProps, type TranscriptType } from '../types';
|
|
12
13
|
|
|
13
14
|
export default () =>
|
|
14
15
|
contributes(Capabilities.ReactSurface, [
|
|
15
16
|
createSurface({
|
|
16
|
-
id: `${
|
|
17
|
+
id: `${meta.id}/plugin-settings`,
|
|
18
|
+
role: 'article',
|
|
19
|
+
filter: (data): data is { subject: SettingsStore<TranscriptionSettingsProps> } =>
|
|
20
|
+
data.subject instanceof SettingsStore && data.subject.prefix === meta.id,
|
|
21
|
+
component: ({ data: { subject } }) => <TranscriptionSettings settings={subject.value} />,
|
|
22
|
+
}),
|
|
23
|
+
createSurface({
|
|
24
|
+
id: `${meta.id}/article/transcript`,
|
|
17
25
|
role: ['article', 'section'],
|
|
18
26
|
filter: (data): data is { subject: TranscriptType } => isTranscript(data.subject),
|
|
19
27
|
component: ({ data, role }) => <TranscriptionContainer transcript={data.subject} role={role} />,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Capabilities, contributes } from '@dxos/app-framework';
|
|
6
|
+
import { live } from '@dxos/live-object';
|
|
7
|
+
|
|
8
|
+
import { TRANSCRIPTION_PLUGIN } from '../meta';
|
|
9
|
+
import { TranscriptionSettingsSchema } from '../types';
|
|
10
|
+
|
|
11
|
+
export default () => {
|
|
12
|
+
// TODO(wittjosiah): `live` currently doesn't handle schema default values.
|
|
13
|
+
const settings = live(TranscriptionSettingsSchema, { entityExtraction: true });
|
|
14
|
+
|
|
15
|
+
return contributes(Capabilities.Settings, {
|
|
16
|
+
schema: TranscriptionSettingsSchema,
|
|
17
|
+
prefix: TRANSCRIPTION_PLUGIN,
|
|
18
|
+
value: settings,
|
|
19
|
+
});
|
|
20
|
+
};
|