@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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testings.d.ts","sourceRoot":"","sources":["../../../../../src/components/Transcript/testings.ts"],"names":[],"mappings":"AAUA,OAAO,EAAqC,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAGzE,OAAO,EAA2B,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAO9E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,eAAO,MAAM,QAAQ;;;GASoD,CAAC;AAE1E;;GAEG;AACH,qBAAa,YAAY;IAUX,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IATpC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAsB;IAE/C,KAAK;;;QAGD;IAEJ,KAAK,OAAgD;gBAExB,MAAM,CAAC,EAAE,KAAK,YAAA;IAE3C,WAAW,CAAC,WAAW,SAAI,GAAG,eAAe;IAQ7C,aAAa;;;;IAiBb,IAAI;CAIL;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,UAAW,KAAK,GAAG,SAAS;;;;;;;;cAoBjE,CAAC;AAyCF;;GAEG;AACH,eAAO,MAAM,6CAA6C,UACjD,KAAK,GAAG,SAAS;;;;;;;;cAiCzB,CAAC"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { Schema } from 'effect';
|
|
2
|
-
import { TranscriptBlock } from '../types';
|
|
3
|
-
export declare const DocumentType: import("@dxos/echo-schema").EchoObjectSchema<Schema.Struct<{
|
|
4
|
-
id: import("@dxos/echo-schema").ObjectIdClass;
|
|
5
|
-
name: typeof Schema.String;
|
|
6
|
-
content: typeof Schema.String;
|
|
7
|
-
}>>;
|
|
8
|
-
export type DocumentType = typeof DocumentType.Type;
|
|
9
|
-
export declare const contacts: {
|
|
10
|
-
john: {
|
|
11
|
-
readonly id: string;
|
|
12
|
-
name?: string | undefined;
|
|
13
|
-
identifiers: {
|
|
14
|
-
readonly value: string;
|
|
15
|
-
readonly type: string;
|
|
16
|
-
}[];
|
|
17
|
-
};
|
|
18
|
-
sarah: {
|
|
19
|
-
readonly id: string;
|
|
20
|
-
name?: string | undefined;
|
|
21
|
-
identifiers: {
|
|
22
|
-
readonly value: string;
|
|
23
|
-
readonly type: string;
|
|
24
|
-
}[];
|
|
25
|
-
};
|
|
26
|
-
michael: {
|
|
27
|
-
readonly id: string;
|
|
28
|
-
name?: string | undefined;
|
|
29
|
-
identifiers: {
|
|
30
|
-
readonly value: string;
|
|
31
|
-
readonly type: string;
|
|
32
|
-
}[];
|
|
33
|
-
};
|
|
34
|
-
emma: {
|
|
35
|
-
readonly id: string;
|
|
36
|
-
name?: string | undefined;
|
|
37
|
-
identifiers: {
|
|
38
|
-
readonly value: string;
|
|
39
|
-
readonly type: string;
|
|
40
|
-
}[];
|
|
41
|
-
};
|
|
42
|
-
david: {
|
|
43
|
-
readonly id: string;
|
|
44
|
-
name?: string | undefined;
|
|
45
|
-
identifiers: {
|
|
46
|
-
readonly value: string;
|
|
47
|
-
readonly type: string;
|
|
48
|
-
}[];
|
|
49
|
-
};
|
|
50
|
-
unknown1: {
|
|
51
|
-
readonly id: string;
|
|
52
|
-
name?: string | undefined;
|
|
53
|
-
identifiers: {
|
|
54
|
-
readonly value: string;
|
|
55
|
-
readonly type: string;
|
|
56
|
-
}[];
|
|
57
|
-
};
|
|
58
|
-
unknown2: {
|
|
59
|
-
readonly id: string;
|
|
60
|
-
name?: string | undefined;
|
|
61
|
-
identifiers: {
|
|
62
|
-
readonly value: string;
|
|
63
|
-
readonly type: string;
|
|
64
|
-
}[];
|
|
65
|
-
};
|
|
66
|
-
};
|
|
67
|
-
export declare const documents: {
|
|
68
|
-
readonly id: string;
|
|
69
|
-
name: string;
|
|
70
|
-
content: string;
|
|
71
|
-
}[];
|
|
72
|
-
export declare const transcriptBlocks: TranscriptBlock[];
|
|
73
|
-
//# sourceMappingURL=test-data.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-data.d.ts","sourceRoot":"","sources":["../../../../src/testing/test-data.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAkB3C,eAAO,MAAM,YAAY;;;;GAIuD,CAAC;AACjF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAC;AASpD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQpB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;GA0CrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,eAAe,EA0N7C,CAAC"}
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { useEffect, useMemo, useState } from 'react';
|
|
6
|
-
|
|
7
|
-
import { AIServiceEdgeClient } from '@dxos/assistant';
|
|
8
|
-
import { AI_SERVICE_ENDPOINT } from '@dxos/assistant/testing';
|
|
9
|
-
import { scheduleTaskInterval } from '@dxos/async';
|
|
10
|
-
import { Context } from '@dxos/context';
|
|
11
|
-
import { AST, create, EchoObject, ObjectId, S } from '@dxos/echo-schema';
|
|
12
|
-
import { DXN, QueueSubspaceTags } from '@dxos/keys';
|
|
13
|
-
import { faker } from '@dxos/random';
|
|
14
|
-
import { live, makeRef, useQueue, type Space } from '@dxos/react-client/echo';
|
|
15
|
-
import { SpaceId } from '@dxos/react-client/echo';
|
|
16
|
-
import { hues } from '@dxos/react-ui-theme';
|
|
17
|
-
import { ContactType } from '@dxos/schema';
|
|
18
|
-
|
|
19
|
-
import { processTranscriptBlock } from '../../entity-extraction';
|
|
20
|
-
import * as TestData from '../../testing/test-data';
|
|
21
|
-
import { TranscriptBlock } from '../../types';
|
|
22
|
-
|
|
23
|
-
// TODO(burdon): Reconcile with plugin-markdown. Move to schema-testing.
|
|
24
|
-
export const TestItem = S.Struct({
|
|
25
|
-
title: S.String.annotations({
|
|
26
|
-
[AST.TitleAnnotationId]: 'Title',
|
|
27
|
-
[AST.DescriptionAnnotationId]: 'Product title',
|
|
28
|
-
}),
|
|
29
|
-
description: S.String.annotations({
|
|
30
|
-
[AST.TitleAnnotationId]: 'Description',
|
|
31
|
-
[AST.DescriptionAnnotationId]: 'Product description',
|
|
32
|
-
}),
|
|
33
|
-
}).pipe(EchoObject({ typename: 'dxos.org/type/Test', version: '0.1.0' }));
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Generator of transcript blocks.
|
|
37
|
-
*/
|
|
38
|
-
export class BlockBuilder {
|
|
39
|
-
static readonly singleton = new BlockBuilder();
|
|
40
|
-
|
|
41
|
-
users = Array.from({ length: 5 }, () => ({
|
|
42
|
-
authorName: faker.person.fullName(),
|
|
43
|
-
authorHue: faker.helpers.arrayElement(hues),
|
|
44
|
-
}));
|
|
45
|
-
|
|
46
|
-
start = new Date(Date.now() - 24 * 60 * 60 * 10_000);
|
|
47
|
-
|
|
48
|
-
constructor(private readonly _space?: Space) {}
|
|
49
|
-
|
|
50
|
-
createBlock(numSegments = 1): TranscriptBlock {
|
|
51
|
-
return {
|
|
52
|
-
id: ObjectId.random().toString(),
|
|
53
|
-
...faker.helpers.arrayElement(this.users),
|
|
54
|
-
segments: Array.from({ length: numSegments }).map(() => this.createSegment()),
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
createSegment() {
|
|
59
|
-
let text = faker.lorem.paragraph();
|
|
60
|
-
if (this._space) {
|
|
61
|
-
const label = faker.commerce.productName();
|
|
62
|
-
const obj = this._space.db.add(live(TestItem, { title: label, description: faker.lorem.paragraph() }));
|
|
63
|
-
const dxn = makeRef(obj).dxn.toString();
|
|
64
|
-
const words = text.split(' ');
|
|
65
|
-
words.splice(Math.floor(Math.random() * words.length), 0, `[${label}][${dxn}]`);
|
|
66
|
-
text = words.join(' ');
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return {
|
|
70
|
-
started: this.next().toISOString(),
|
|
71
|
-
text,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
next() {
|
|
76
|
-
this.start = new Date(this.start.getTime() + Math.random() * 10_000);
|
|
77
|
-
return this.start;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Test transcriptionqueue.
|
|
83
|
-
*/
|
|
84
|
-
export const useTestTranscriptionQueue = (space: Space | undefined, running = true, interval = 1_000) => {
|
|
85
|
-
const queueDxn = useMemo(
|
|
86
|
-
() => (space ? new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, space.id, ObjectId.random()]) : undefined),
|
|
87
|
-
[space],
|
|
88
|
-
);
|
|
89
|
-
const queue = useQueue<TranscriptBlock>(queueDxn);
|
|
90
|
-
|
|
91
|
-
const builder = useMemo(() => new BlockBuilder(space), [space]);
|
|
92
|
-
useEffect(() => {
|
|
93
|
-
if (!queue || !running) {
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
const i = setInterval(() => {
|
|
98
|
-
queue.append([create(TranscriptBlock, builder.createBlock(Math.ceil(Math.random() * 3)))]);
|
|
99
|
-
}, interval);
|
|
100
|
-
return () => clearInterval(i);
|
|
101
|
-
}, [queue, running, interval]);
|
|
102
|
-
|
|
103
|
-
return queue;
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
class EntityExtractionBlockBuilder {
|
|
107
|
-
aiService = new AIServiceEdgeClient({
|
|
108
|
-
endpoint: AI_SERVICE_ENDPOINT.REMOTE,
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
currentBlock: number = 0;
|
|
112
|
-
|
|
113
|
-
seedData(space: Space) {
|
|
114
|
-
space.db.graph.schemaRegistry.addSchema([ContactType]);
|
|
115
|
-
// for (const document of TestData.documents) {
|
|
116
|
-
// const obj = space.db.add(live(Document, document));
|
|
117
|
-
// const dxn = makeRef(obj).dxn.toString();
|
|
118
|
-
// document.dxn = dxn;
|
|
119
|
-
// }
|
|
120
|
-
|
|
121
|
-
for (const contact of Object.values(TestData.contacts)) {
|
|
122
|
-
space.db.add(contact);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
async createBlock(): Promise<TranscriptBlock> {
|
|
127
|
-
const block = TestData.transcriptBlocks[this.currentBlock];
|
|
128
|
-
this.currentBlock++;
|
|
129
|
-
this.currentBlock = this.currentBlock % TestData.transcriptBlocks.length;
|
|
130
|
-
|
|
131
|
-
const { block: enhancedBlock } = await processTranscriptBlock({
|
|
132
|
-
block,
|
|
133
|
-
aiService: this.aiService,
|
|
134
|
-
context: {
|
|
135
|
-
objects: [...TestData.documents, ...Object.values(TestData.contacts)],
|
|
136
|
-
},
|
|
137
|
-
});
|
|
138
|
-
return enhancedBlock;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
const randomQueueDXN = (spaceId = SpaceId.random()) =>
|
|
143
|
-
new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, spaceId, ObjectId.random()]);
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Test transcription queue.
|
|
147
|
-
*/
|
|
148
|
-
export const useTestTranscriptionQueueWithEntityExtraction = (
|
|
149
|
-
space: Space | undefined,
|
|
150
|
-
running = true,
|
|
151
|
-
interval = 1_000,
|
|
152
|
-
) => {
|
|
153
|
-
const queueDxn = useMemo(() => (space ? randomQueueDXN(space.id) : undefined), [space]);
|
|
154
|
-
const queue = useQueue<TranscriptBlock>(queueDxn);
|
|
155
|
-
const [builder] = useState(() => new EntityExtractionBlockBuilder());
|
|
156
|
-
|
|
157
|
-
useEffect(() => {
|
|
158
|
-
if (!queue || !running) {
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if (space) {
|
|
163
|
-
builder.seedData(space);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
const ctx = new Context();
|
|
167
|
-
scheduleTaskInterval(
|
|
168
|
-
ctx,
|
|
169
|
-
async () => {
|
|
170
|
-
const block = await builder.createBlock();
|
|
171
|
-
queue.append([create(TranscriptBlock, block)]);
|
|
172
|
-
},
|
|
173
|
-
interval,
|
|
174
|
-
);
|
|
175
|
-
|
|
176
|
-
return () => {
|
|
177
|
-
void ctx.dispose();
|
|
178
|
-
};
|
|
179
|
-
}, [space, queue, running, interval]);
|
|
180
|
-
|
|
181
|
-
return queue;
|
|
182
|
-
};
|
package/src/testing/test-data.ts
DELETED
|
@@ -1,314 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { Schema } from 'effect';
|
|
6
|
-
|
|
7
|
-
import { create, EchoObject, ObjectId } from '@dxos/echo-schema';
|
|
8
|
-
import { ContactType } from '@dxos/schema';
|
|
9
|
-
|
|
10
|
-
import { TranscriptBlock } from '../types';
|
|
11
|
-
|
|
12
|
-
const createContact = (name: string, email: string): ContactType => {
|
|
13
|
-
return create(ContactType, {
|
|
14
|
-
name,
|
|
15
|
-
identifiers: [{ type: 'email', value: email }],
|
|
16
|
-
});
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Helper to create dates in reverse chronological order
|
|
21
|
-
*/
|
|
22
|
-
const getDate = (daysAgo: number): string => {
|
|
23
|
-
const date = new Date();
|
|
24
|
-
date.setDate(date.getDate() - daysAgo);
|
|
25
|
-
return date.toISOString();
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export const DocumentType = Schema.Struct({
|
|
29
|
-
id: ObjectId,
|
|
30
|
-
name: Schema.String,
|
|
31
|
-
content: Schema.String,
|
|
32
|
-
}).pipe(EchoObject({ typename: 'dxos.org/example/Document', version: '0.1.0' }));
|
|
33
|
-
export type DocumentType = typeof DocumentType.Type;
|
|
34
|
-
|
|
35
|
-
const createDocument = (name: string, content: string): DocumentType => {
|
|
36
|
-
return create(DocumentType, {
|
|
37
|
-
name,
|
|
38
|
-
content,
|
|
39
|
-
});
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
export const contacts = {
|
|
43
|
-
john: createContact('John Doe', 'john.doe@example.com'),
|
|
44
|
-
sarah: createContact('Sarah Johnson', 'sarah.johnson@techvision.com'),
|
|
45
|
-
michael: createContact('Michael Chen', 'michael.chen@techvision.com'),
|
|
46
|
-
emma: createContact('Emma Rodriguez', 'e.rodriguez@investors.com'),
|
|
47
|
-
david: createContact('David Williams', 'david@accountingfirm.com'),
|
|
48
|
-
unknown1: createContact('Bitcoin Support', 'support@btc-wallet-verify.com'),
|
|
49
|
-
unknown2: createContact('HR Department', 'hr-department@techvison-company.co'),
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
export const documents = [
|
|
53
|
-
createDocument(
|
|
54
|
-
'Q3 Financial Report',
|
|
55
|
-
'Q3 Financial Summary\n\nRevenue: $12.4M (↑8% YoY)\nExpenses: $8.7M (↑15% YoY)\nMargin: 29.8% (↓4.5% YoY)\n\nConcerns:\n- Marketing budget exceeded allocation by 23%\n- Customer acquisition cost increased to $142 (↑18%)\n- New product line underperforming projections by 35%\n\nRecommendations:\n1. Reallocate Q4 marketing budget to high-performing channels\n2. Implement cost-saving measures in non-essential operations\n3. Review pricing strategy for new product line',
|
|
56
|
-
),
|
|
57
|
-
createDocument(
|
|
58
|
-
'Testing Protocol',
|
|
59
|
-
'Beta Testing Protocol v2.3\n\nPhase 1: Internal QA (2 weeks)\n- Unit testing coverage must exceed 85%\n- Integration testing across all supported platforms\n- Performance benchmarking against v4.2\n\nPhase 2: Closed Beta (3 weeks)\n- 250 selected customers from premium tier\n- Daily feedback collection and triage\n- Weekly build updates based on critical issues\n\nPhase 3: Open Beta (2 weeks)\n- Gradual rollout to 10,000 users\n- A/B testing of UI variations\n- Stress testing with simulated peak loads\n\nSuccess Criteria:\n- Crash rate below 0.1%\n- User satisfaction score >4.2/5\n- Performance degradation <5% on target devices',
|
|
60
|
-
),
|
|
61
|
-
createDocument(
|
|
62
|
-
'Asia Market Expansion',
|
|
63
|
-
'Asia Market Expansion Strategy\n\nTarget Markets:\n1. Japan - $4.2B TAM, 22% CAGR\n2. South Korea - $2.8B TAM, 19% CAGR\n3. Singapore - $1.5B TAM, 24% CAGR\n\nCompetitive Landscape:\n- Local players dominate 65% of market share\n- Western competitors struggling with localization\n- Regulatory environment favors local partnerships\n\nEntry Strategy:\n- Phase 1: Strategic partnerships with established distributors\n- Phase 2: Local office establishment in Singapore (regional hub)\n- Phase 3: Acquisition of complementary local technology firms\n\nProjected ROI: 3.2x investment over 5 years with break-even in Year 3',
|
|
64
|
-
),
|
|
65
|
-
createDocument(
|
|
66
|
-
'Strategic Partnership Proposal',
|
|
67
|
-
'Partnership Framework: TechVision & Example Corp\n\nProposed Collaboration Areas:\n\n1. Technology Integration\n - API access to respective platforms\n - Joint development of middleware solutions\n - Shared data insights with privacy controls\n\n2. Market Expansion\n - Co-branded offerings for enterprise segment\n - Channel partner access in respective regions\n - Joint participation in industry events\n\n3. Investment Structure\n - Initial pilot project ($250K shared investment)\n - Success-based scaling model\n - Equity considerations for Phase 2\n\nAnticipated Outcomes:\n- $8-12M incremental revenue within 24 months\n- 15% reduction in customer acquisition costs\n- Accelerated product roadmap by ~6 months',
|
|
68
|
-
),
|
|
69
|
-
createDocument(
|
|
70
|
-
'Annual Audit Checklist',
|
|
71
|
-
'FY2023 Audit Preparation Checklist\n\nFinance Department:\n- General ledger and trial balance\n- Bank reconciliations and statements (all accounts)\n- Accounts receivable aging report with bad debt analysis\n- Fixed asset register with depreciation schedules\n- Loan agreements and covenant compliance documentation\n\nOperations:\n- Inventory count procedures and results\n- Major contracts and purchase agreements\n- Vendor master list with annual spend analysis\n- Warehouse security and valuation procedures\n\nHR:\n- Payroll reconciliations and tax filings\n- Benefits administration documentation\n- Employee handbook and policy updates\n- Executive compensation agreements\n\nIT:\n- System access controls documentation\n- Backup and disaster recovery testing results\n- Security incident reports and resolution documentation\n- Software license compliance report',
|
|
72
|
-
),
|
|
73
|
-
createDocument(
|
|
74
|
-
'Product Roadmap 2023-2024',
|
|
75
|
-
'Product Roadmap: July 2023 - December 2024\n\nQ3 2023:\n- Core platform v5.0 release\n • Redesigned user interface\n • Performance improvements (50% faster loading)\n • Enhanced security features\n\nQ4 2023:\n- Mobile application redesign\n- Enterprise SSO integration\n- Custom reporting engine\n\nQ1 2024:\n- AI-powered recommendation system\n- Advanced analytics dashboard\n- API v3 with expanded capabilities\n\nQ2 2024:\n- Multi-tenant architecture\n- Compliance module for regulated industries\n- White-labeling capabilities\n\nQ3-Q4 2024:\n- International expansion features\n- Blockchain integration for document verification\n- Industry-specific vertical solutions\n\nResource Allocation:\n- Engineering: 65% of budget\n- Design: 15% of budget\n- QA: 12% of budget\n- Documentation/Support: 8% of budget',
|
|
76
|
-
),
|
|
77
|
-
createDocument(
|
|
78
|
-
'TechGiant Acquisition Offer',
|
|
79
|
-
'CONFIDENTIAL: TechGiant Acquisition Offer Analysis\n\nOffer Details:\n- $450M all-cash transaction\n- 30-day exclusivity period requested\n- Retention packages for key executives (3-year vesting)\n- Product integration roadmap provided\n\nValuation Analysis:\n- 8.2x trailing twelve-month revenue\n- 6.4x forward revenue (based on projections)\n- 22x EBITDA (industry average: 18-24x)\n\nComparable Transactions:\n- CompetitorX acquisition: 7.5x revenue (2022)\n- StartupY acquisition: 9.1x revenue (2023)\n\nPreliminary Board Considerations:\n- Offer represents 35% premium to last funding round valuation\n- Potential regulatory concerns in EU market\n- IP ownership transition requires careful structuring\n- Alternative paths to liquidity should be evaluated\n\nNext Steps:\n- Engage outside counsel for preliminary review\n- Prepare counter-proposal scenarios\n- Develop communication strategy for employees and customers',
|
|
80
|
-
),
|
|
81
|
-
// Unrelated documents
|
|
82
|
-
createDocument(
|
|
83
|
-
'Employee Handbook',
|
|
84
|
-
'TechVision Employee Handbook v3.2\n\nSection 1: Company Overview\n- Mission and values\n- Organizational structure\n- Company history\n\nSection 2: Employment Policies\n- Equal opportunity statement\n- At-will employment explanation\n- Code of conduct\n- Confidentiality requirements\n\nSection 3: Compensation & Benefits\n- Pay periods and methods\n- Health insurance options\n- 401(k) plan details\n- Stock option program\n- Professional development allowance\n\nSection 4: Time Off & Leave Policies\n- Vacation accrual schedule\n- Sick leave policy\n- Parental leave benefits\n- Bereavement and jury duty\n\nSection 5: Workplace Guidelines\n- Office hours and flexible work\n- Remote work policies\n- Equipment usage\n- Expense reimbursement procedure\n\nSection 6: Health & Safety\n- Emergency procedures\n- Workplace safety guidelines\n- Incident reporting process',
|
|
85
|
-
),
|
|
86
|
-
createDocument(
|
|
87
|
-
'Project Moonshot',
|
|
88
|
-
'Project Moonshot: Preliminary Research\n\nMarket Opportunity:\n- $35B global addressable market by 2026\n- 42% CAGR in emerging economies\n- Limited competition with established solutions\n\nTechnical Feasibility:\n- Core technology proven in lab environment (TRL 4)\n- Key patents identified for licensing or acquisition\n- Estimated 18-24 months to minimum viable product\n\nResource Requirements:\n- Core team of 8-10 engineers (3 specialized roles)\n- Initial funding need: $4.2M for Phase 1\n- Strategic partnerships required for manufacturing\n\nRisk Assessment:\n- Regulatory approval pathway unclear in target markets\n- Two competing technologies in early development\n- Supply chain dependencies for critical components\n\nNext Decision Point:\n- Go/no-go for prototype development by Q4',
|
|
89
|
-
),
|
|
90
|
-
createDocument(
|
|
91
|
-
'Office Relocation Plan',
|
|
92
|
-
'Headquarters Relocation Plan: Downtown Campus\n\nTimeline:\n- Phase 1: Planning & Design (3 months)\n- Phase 2: Construction & Buildout (5 months)\n- Phase 3: Move Execution (1 month)\n- Target completion: December 15\n\nSpace Details:\n- 45,000 sq ft across 3 floors\n- 320 workstations (30% hot-desking)\n- 18 conference rooms of varying sizes\n- 5 specialized collaboration spaces\n- Expanded lab and testing facilities\n\nBudget Summary:\n- Lease: $42/sq ft annually ($1.89M/year)\n- Buildout: $185/sq ft ($8.3M total)\n- Furniture & Equipment: $2.4M\n- Moving & Logistics: $350K\n- Technology Infrastructure: $1.2M\n\nDepartment Migration Schedule:\n- Engineering: December 3-4\n- Product & Design: December 5-6\n- Sales & Marketing: December 10-11\n- Executive & Operations: December 12-13',
|
|
93
|
-
),
|
|
94
|
-
];
|
|
95
|
-
|
|
96
|
-
export const transcriptBlocks: TranscriptBlock[] = [
|
|
97
|
-
create(TranscriptBlock, {
|
|
98
|
-
authorName: contacts.john.name,
|
|
99
|
-
segments: [
|
|
100
|
-
{
|
|
101
|
-
started: getDate(0),
|
|
102
|
-
text: 'Good morning everyone. Thanks for joining the quarterly strategy meeting. I see Sarah and Emma are here. Are we still waiting for David?',
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
started: getDate(30),
|
|
106
|
-
text: 'While we wait, let me pull up the Q3 Financial Report that we need to review today.',
|
|
107
|
-
},
|
|
108
|
-
],
|
|
109
|
-
}),
|
|
110
|
-
create(TranscriptBlock, {
|
|
111
|
-
authorName: contacts.sarah.name,
|
|
112
|
-
segments: [
|
|
113
|
-
{
|
|
114
|
-
started: getDate(45),
|
|
115
|
-
text: "Morning John. David texted me that he's running about 5 minutes late. Something about finalizing some numbers for us.",
|
|
116
|
-
},
|
|
117
|
-
],
|
|
118
|
-
}),
|
|
119
|
-
create(TranscriptBlock, {
|
|
120
|
-
authorName: contacts.emma.name,
|
|
121
|
-
segments: [
|
|
122
|
-
{
|
|
123
|
-
started: getDate(60),
|
|
124
|
-
text: "Hi everyone. I've already reviewed the Q3 report. I'm particularly concerned about the marketing budget overrun. 23% over allocation is significant.",
|
|
125
|
-
},
|
|
126
|
-
],
|
|
127
|
-
}),
|
|
128
|
-
create(TranscriptBlock, {
|
|
129
|
-
authorName: contacts.john.name,
|
|
130
|
-
segments: [
|
|
131
|
-
{
|
|
132
|
-
started: getDate(90),
|
|
133
|
-
text: "I agree, Emma. That's definitely one of our top concerns. We also need to address the underperforming new product line. It's 35% below projections.",
|
|
134
|
-
},
|
|
135
|
-
],
|
|
136
|
-
}),
|
|
137
|
-
create(TranscriptBlock, {
|
|
138
|
-
authorName: contacts.david.name,
|
|
139
|
-
segments: [
|
|
140
|
-
{
|
|
141
|
-
started: getDate(120),
|
|
142
|
-
text: "Sorry I'm late everyone. I was just finalizing the numbers for our Asia Market Expansion strategy to discuss today.",
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
started: getDate(135),
|
|
146
|
-
text: "I see you're already discussing the Q3 report. The margin decrease is concerning, but I think it's related to our investment in the new markets.",
|
|
147
|
-
},
|
|
148
|
-
],
|
|
149
|
-
}),
|
|
150
|
-
create(TranscriptBlock, {
|
|
151
|
-
authorName: contacts.sarah.name,
|
|
152
|
-
segments: [
|
|
153
|
-
{
|
|
154
|
-
started: getDate(160),
|
|
155
|
-
text: "David, regarding the Asia expansion, I've been working with Michael from the Singapore office. The regulatory environment there definitely favors local partnerships as mentioned in our strategy document.",
|
|
156
|
-
},
|
|
157
|
-
],
|
|
158
|
-
}),
|
|
159
|
-
create(TranscriptBlock, {
|
|
160
|
-
authorName: contacts.emma.name,
|
|
161
|
-
segments: [
|
|
162
|
-
{
|
|
163
|
-
started: getDate(190),
|
|
164
|
-
text: 'I think we should also consider the TechGiant acquisition offer in light of our expansion plans. The $450M all-cash transaction would give us significant resources for the Asia push.',
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
started: getDate(210),
|
|
168
|
-
text: 'Has anyone spoken with Alex about this? As our CFO, his input would be valuable.',
|
|
169
|
-
},
|
|
170
|
-
],
|
|
171
|
-
}),
|
|
172
|
-
create(TranscriptBlock, {
|
|
173
|
-
authorName: contacts.john.name,
|
|
174
|
-
segments: [
|
|
175
|
-
{
|
|
176
|
-
started: getDate(240),
|
|
177
|
-
text: "I had lunch with Alex yesterday. He's running the numbers, but his initial reaction was positive. The 35% premium over our last funding round is attractive.",
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
started: getDate(260),
|
|
181
|
-
text: "Let's shift gears to the Product Roadmap for 2023-2024. Sarah, can you give us an update on the Q3 deliverables?",
|
|
182
|
-
},
|
|
183
|
-
],
|
|
184
|
-
}),
|
|
185
|
-
create(TranscriptBlock, {
|
|
186
|
-
authorName: contacts.sarah.name,
|
|
187
|
-
segments: [
|
|
188
|
-
{
|
|
189
|
-
started: getDate(290),
|
|
190
|
-
text: 'Sure. The core platform v5.0 is on track for release next month. The redesigned UI has tested well with focus groups, and performance improvements are exceeding our 50% faster loading target.',
|
|
191
|
-
},
|
|
192
|
-
{
|
|
193
|
-
started: getDate(320),
|
|
194
|
-
text: "I've been working closely with Jennifer's team on the enhanced security features. They've done an excellent job.",
|
|
195
|
-
},
|
|
196
|
-
],
|
|
197
|
-
}),
|
|
198
|
-
create(TranscriptBlock, {
|
|
199
|
-
authorName: contacts.david.name,
|
|
200
|
-
segments: [
|
|
201
|
-
{
|
|
202
|
-
started: getDate(350),
|
|
203
|
-
text: 'Speaking of security, I received an email from someone claiming to be from Bitcoin Support. It looked suspicious, so I forwarded it to our IT security team.',
|
|
204
|
-
},
|
|
205
|
-
],
|
|
206
|
-
}),
|
|
207
|
-
create(TranscriptBlock, {
|
|
208
|
-
authorName: contacts.john.name,
|
|
209
|
-
segments: [
|
|
210
|
-
{
|
|
211
|
-
started: getDate(380),
|
|
212
|
-
text: "Good call, David. There's been an increase in phishing attempts lately. Everyone should remain vigilant.",
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
started: getDate(400),
|
|
216
|
-
text: 'Now, regarding our Strategic Partnership Proposal with Example Corp, I had a productive call with their CEO yesterday.',
|
|
217
|
-
},
|
|
218
|
-
],
|
|
219
|
-
}),
|
|
220
|
-
create(TranscriptBlock, {
|
|
221
|
-
authorName: contacts.emma.name,
|
|
222
|
-
segments: [
|
|
223
|
-
{
|
|
224
|
-
started: getDate(430),
|
|
225
|
-
text: "That's great to hear. The partnership framework looks solid. I particularly like the co-branded offerings for the enterprise segment. That aligns well with our Q4 goals.",
|
|
226
|
-
},
|
|
227
|
-
],
|
|
228
|
-
}),
|
|
229
|
-
create(TranscriptBlock, {
|
|
230
|
-
authorName: contacts.sarah.name,
|
|
231
|
-
segments: [
|
|
232
|
-
{
|
|
233
|
-
started: getDate(460),
|
|
234
|
-
text: 'By the way, has everyone completed their items for the Annual Audit Checklist? The HR Department sent a reminder yesterday about the payroll reconciliations and tax filings.',
|
|
235
|
-
},
|
|
236
|
-
],
|
|
237
|
-
}),
|
|
238
|
-
create(TranscriptBlock, {
|
|
239
|
-
authorName: contacts.david.name,
|
|
240
|
-
segments: [
|
|
241
|
-
{
|
|
242
|
-
started: getDate(490),
|
|
243
|
-
text: "I've submitted all the finance department items. The general ledger, trial balance, and bank reconciliations are all ready for review.",
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
started: getDate(510),
|
|
247
|
-
text: "I'm still working on the accounts receivable aging report with bad debt analysis. Should have that done by tomorrow.",
|
|
248
|
-
},
|
|
249
|
-
],
|
|
250
|
-
}),
|
|
251
|
-
create(TranscriptBlock, {
|
|
252
|
-
authorName: contacts.john.name,
|
|
253
|
-
segments: [
|
|
254
|
-
{
|
|
255
|
-
started: getDate(540),
|
|
256
|
-
text: "Excellent. Let's wrap up with action items. Emma, can you lead the marketing budget reallocation for Q4?",
|
|
257
|
-
},
|
|
258
|
-
],
|
|
259
|
-
}),
|
|
260
|
-
create(TranscriptBlock, {
|
|
261
|
-
authorName: contacts.emma.name,
|
|
262
|
-
segments: [
|
|
263
|
-
{
|
|
264
|
-
started: getDate(570),
|
|
265
|
-
text: "Yes, I'll work with the marketing team to focus on high-performing channels as recommended in the Q3 report.",
|
|
266
|
-
},
|
|
267
|
-
],
|
|
268
|
-
}),
|
|
269
|
-
create(TranscriptBlock, {
|
|
270
|
-
authorName: contacts.john.name,
|
|
271
|
-
segments: [
|
|
272
|
-
{
|
|
273
|
-
started: getDate(600),
|
|
274
|
-
text: 'Sarah, please continue leading the product release and coordinate with Jennifer on the security features.',
|
|
275
|
-
},
|
|
276
|
-
],
|
|
277
|
-
}),
|
|
278
|
-
create(TranscriptBlock, {
|
|
279
|
-
authorName: contacts.sarah.name,
|
|
280
|
-
segments: [
|
|
281
|
-
{
|
|
282
|
-
started: getDate(630),
|
|
283
|
-
text: "Will do. I'll also follow up with Michael about the Singapore regulatory requirements for our Asia expansion.",
|
|
284
|
-
},
|
|
285
|
-
],
|
|
286
|
-
}),
|
|
287
|
-
create(TranscriptBlock, {
|
|
288
|
-
authorName: contacts.john.name,
|
|
289
|
-
segments: [
|
|
290
|
-
{
|
|
291
|
-
started: getDate(660),
|
|
292
|
-
text: 'And David, please finalize the accounts receivable report and continue your analysis of the TechGiant offer with Alex.',
|
|
293
|
-
},
|
|
294
|
-
],
|
|
295
|
-
}),
|
|
296
|
-
create(TranscriptBlock, {
|
|
297
|
-
authorName: contacts.david.name,
|
|
298
|
-
segments: [
|
|
299
|
-
{
|
|
300
|
-
started: getDate(690),
|
|
301
|
-
text: "I'm on it. I'll have a detailed analysis ready for our next meeting.",
|
|
302
|
-
},
|
|
303
|
-
],
|
|
304
|
-
}),
|
|
305
|
-
create(TranscriptBlock, {
|
|
306
|
-
authorName: contacts.john.name,
|
|
307
|
-
segments: [
|
|
308
|
-
{
|
|
309
|
-
started: getDate(720),
|
|
310
|
-
text: "Great. Thanks everyone for a productive meeting. Let's reconvene next week to follow up on these items.",
|
|
311
|
-
},
|
|
312
|
-
],
|
|
313
|
-
}),
|
|
314
|
-
];
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|